65.9K
CodeProject 正在变化。 阅读更多。
Home

Codon 入门 - 第 2 部分

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.60/5 (5投票s)

2017 年 4 月 4 日

CPOL

2分钟阅读

viewsIcon

10283

使用跨平台Codon框架的设置服务存储和检索设置。

Codon是一个零依赖的跨平台MVVM框架,用于创建基于UWP、WPF和Xamarin的应用程序。它提供了您快速创建复杂且可维护的应用程序所需的大部分功能。

引言

之前的文章中,我们熟悉了视图模型初始化以及属性和命令的使用。在本文中,您将了解如何使用设置服务保存和检索持久数据。

本文中提供的代码位于Samples 存储库中的 Sample001 中

几乎每个应用程序都需要存储和检索设置。Codon通过其ISettingsService实现提供了一个抽象的API来存储和检索设置。您可能想知道为什么抽象一组看似存在于所有支持平台上的API会是一个好主意。这有几个原因。虽然.NET Standard中存在Isolated Storage Settings API,但该API在所有平台上的行为并不像您预期的那样。特别是,在WPF实现中,IsolatedStorageSettings.ApplicationSettings为null。Codon使用支持WPF *的自定义实现来解决此问题。

抽象设置API的另一个原因是,它可以让您有机会将底层存储提供程序替换为SQLite实现。当用户开始报告设置被重置并且我意识到需要更强大的存储提供程序时,我为我的一个应用程序做了这件事。

* 如果您对自定义的WPF IsolatedStorageSettings实现感兴趣,请参阅Codon.Platform.Shared项目中的IsolatedStorageSettingsWpf类。

注意:设置服务能够序列化和存储任何对象或原始类型。二进制序列化用于复杂类型。

演示设置服务

Page1ViewModel类的UpdateCreationCount方法在每次实例化视图模型时调用。请参阅清单1。该方法检索键为Page1CreationCount的设置以及默认值。如果不存在此类设置,则返回默认值。

然后通过ISettingsService.SetSetting递增该设置。视图模型的CreationCount属性设置为该设置值。

清单 1. Page1ViewModel.UpdateCreationCount 方法

void UpdateCreationCount()
{
	const string key = "Page1CreationCount";
	/* Use the settings service to retrieve, increment, 
	 * and store a counter. 
	 * The settings service is cross-platform. */
	int count = settingsService.GetSetting(key, 0);
	settingsService.SetSetting(key, ++count);

	CreationCount = count;
}

我们将 CreationCount 属性绑定到 UWP 项目中的一个文本字段,如下所示

<TextBlock Text="{x:Bind ViewModel.CreationCount, Mode=OneWay}" />

在 WPF 项目中,它以类似的方式绑定(不使用 x:Bind)

<TextBlock Text="{Binding CreationCount}" />

在 Android 项目中,我们这样做

<TextView
        l:Binding="Target=Text, Path=CreationCount"
        android:id="@+id/Page1_TextView_ShownCount" ... />

注意: Codon 的 Android 数据绑定基础设施要求具有数据绑定的视图具有 android:id 属性。

结论

在本文中,您了解了如何使用设置服务保存和检索持久数据。在下一部分中,我们将介绍如何在应用程序组件之间传递消息。

我希望这个项目对您有用。如果觉得有用,请评分和/或在下方留言。

历史

2017年4月2日

  • 首次发布
© . All rights reserved.