您的位置:首页 > 其它

win8开发(4)——保存/读取本地应用程序设置

2012-12-04 13:40 239 查看
启动VS,打开“对象浏览器”,我们来找一个东西。

在“对象浏览器”中找到Windows.Storage命名空间,并注意以下几个类。




其中,我们要注意ApplicationData,看看它这名字,你也能猜到它是干哪行的。很明显,

它一定与读写应用程序设置有关。

嗯,猜得没错,ApplicationData有一个静态属性——Current,不用多解释,指的自然是

我们当前运行的应用程序。因此,我们就知道,要得到当前应用程序的ApplicationData,

就通过该属性。

好的,第一个问题解决,现在看第二个问题:如何保存应用程序设置?如何读取?其实这

是一个问题,知道了如何保存,自然就知道如何读取了。

再看看LocalSettings属性,它返回一个ApplicationDataContainer类的实例,这是一个

容器,而且,一个应用程序的本地设置中,还可以包括N个容器,但每个应用程序也会

带有一个容器,所以,如果我们只是存取简单的设置,不需要创建容器,就利用默认的

设置容器即可。

ApplicationDataContainer类有个Values属性,它返回一个IPropertySet接口,侈顺着“

对象浏览器”就能找到,它其实就是一个字典(Key - Value),所以说,“对象浏览器”

非常有用,把它用好了,能为我们解决许多问题。




我相信,如果你的编程基础修练得扎实的话,你不用往下看了,现在,你已经知道如

何读写应用程序设置信息了。

应用程序设置用来干吗?呵呵,这个不难理解,比如,我们的应用程序会提供一个“

设置”页面,让用户按照他的习惯进行设置,如用户选择了哪一套皮肤,或者他设置

某页面的数据,默认显示15条还是30条。

设置信息是比较简单的数据,所以,我们就保存到本地设置中即可。

还有,上面提到了设置信息有容器,这个嘛,可以认为将设置信息分组,就像我们在

设置存储区建立了文件夹一样。

也可以联想一个注册表,Windows系统的注册表其实就是一个庞大的字典,它有键,

每个键对应一个值,但我们知道,注册表是分组的,就像我们硬盘中保存的文件夹和文件一样。

比如,注册表的根会分为HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE等等。

下面,我们一起来做一个练习,这样我们不只是停留在理论上,动手操作一下吧。

1、启动VS,新建一个项(此处省略39个字)。

2、打开MainPage.xaml,参考下面XAML代码:

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">

<Grid.ColumnDefinitions>

<ColumnDefinition Width="2*"/>

<ColumnDefinition Width="*"/>

</Grid.ColumnDefinitions>

<TextBlock Grid.Column="0" Margin="20" TextWrapping="Wrap">

<Span FontSize="36" Foreground="Pink" FontWeight="Black">示例说明</Span>

<LineBreak/>

<Run FontSize="24">

在右侧的列表中选择一项,然后挂起或退出应用程序;接着再运行应用程序。

</Run>

<LineBreak/>

<Run FontSize="24">

在作出选择后,将选择项的索引保存到设置中,当页面初始化时,从设

置中读入之前选择列表项的索引。

</Run>

</TextBlock>

<ListBox x:Name="MyListBox" FontSize="28"

SelectionChanged="onSelectedChanged" Grid.Column="1">

<ListBoxItem>项目一</ListBoxItem>

<ListBoxItem>项目二</ListBoxItem>

<ListBoxItem>项目三</ListBoxItem>

<ListBoxItem>项目四</ListBoxItem>

<ListBoxItem>项目五</ListBoxItem>

</ListBox>

</Grid>

我相信不难理解,重点是ListBox,我们在其中随意设置几个项目,

并绑定其SelectionChanged事件。

3、在SelectionChanged事件上右击,从弹出的菜单中选择“定位到事件处理程序”,

这时候就转到后台代码文件了。

4、我比较习惯用C#,所以,下面代码为C#代码。

private void onSelectedChanged(object sender, SelectionChangedEventArgs e)

{

ListBox lb = sender as ListBox;

if (lb != null)

{

if (lb.SelectedIndex > -1)

{

ApplicationDataContainer myContainer = ApplicationData.Current.LocalSettings;

myContainer.Values["index"] = lb.SelectedIndex;

}

}

}

代码是不复杂的,重点我们是看一下如何保存设置。这里,我们把当前选定项的索引保存。

5、当应用程序导航到本页面时,我们就从设置中读出刚才保存的索引,

并把ListBox的选定项索引还原。

protected override void OnNavigatedTo(NavigationEventArgs e)

{

ApplicationDataContainer container = ApplicationData.Current.LocalSettings;

if (container.Values.ContainsKey("index"))

{

this.MyListBox.SelectedIndex = (int)container.Values["index"];

}

else

{

this.MyListBox.SelectedIndex = 0;

}

}

在读出设置前,一定要通过ContainsKey方法判断一下,要找的键是不是存在的,只有存在才将其值读入。

6、现在,我们来运行一下。

运行,在右边的列表中,随便选择一项,这时候,设置信息已保存。




回到VS,在工具栏中的“调试位置”中,将程序“挂起并结束”。




等待应用程序结束后,我们再重新运行。这时候你会看到,ListBox当前选择的项索引就是我们刚才保存的索引值。

这样,我们就达到读写设置的目的了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: