本文是隔离存储的第三节,大家先喝杯咖啡放松,今天的内容也是非常简单,我们就聊一件东东——用户设置。
当然了,可能翻译为应用程序设置合适一些,不过没关系,只要大家明白,它就是用于保存我们的应用程序的设置信息就行了。

它属于字典集合,每一项保存的数据都以键-值对的形式存储,键值是字符串类型,不能为null,注意啊,不然会引发异常,当然,估计也没有人这么无聊,把空值保存。

使用方法很简单,通过IsolatedStorageSettings的ApplicationSettings静态属必返回一个IsolatedStorageSettings实例,然后呢,你就可随便耍了。

1、要向集合加入数据可调用Add方法,它的定义如下:
     public void Add(string key, object value)
相信大家知道怎么用了。

2、使用Contains(string key)方法检测一下某个键是否存在,在读取上次保存的数据时,这是必须的。

3、Clear方法不用我介绍,一看名字就知道非常恐怖,一不小心,就把你写入的所有设置都清除,当然,在没有调用Save方法前,还没有写入隔离存储区的。

4、Remove(string key)方法,当你觉得某项设置不需要了,或者你觉得它人品太差,需要删除,可以调用该方法,参数更不用我说了,对就是要删除的项的键,比如你是QQ群主,你想踢掉某个人品值较低的成员时,你肯定要先知道TA的QQ号或昵称。

5、Save这个不用说了,你懂的。

事不宜迟,做个练习,你马上就会懂的。
这个例子很简单了,在两个文本框中输入值,当离开页面时保存,当用户导航到页面后自动加载保存到隔离存储的数据。

[html] view plaincopyprint?
  1. <phone:PhoneApplicationPage
  2. x:Class="PhoneApp1.MainPage"
  3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
  6. xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
  7. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  8. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  9. mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
  10. FontFamily="{StaticResource PhoneFontFamilyNormal}"
  11. FontSize="{StaticResource PhoneFontSizeNormal}"
  12. Foreground="{StaticResource PhoneForegroundBrush}"
  13. SupportedOrientations="Portrait" Orientation="Portrait"
  14. shell:SystemTray.IsVisible="True">
  15. <!--LayoutRoot 是包含所有页面内容的根网格-->
  16. <Grid x:Name="LayoutRoot" Background="Transparent">
  17. <Grid.RowDefinitions>
  18. <RowDefinition Height="Auto"/>
  19. <RowDefinition Height="*"/>
  20. </Grid.RowDefinitions>
  21. <!--TitlePanel 包含应用程序的名称和页标题-->
  22. <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
  23. <TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/>
  24. <TextBlock x:Name="PageTitle" Text="应用程序设置" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
  25. </StackPanel>
  26. <!--ContentPanel - 在此处放置其他内容-->
  27. <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
  28. <TextBlock Height="30" HorizontalAlignment="Left" Margin="33,50,0,0" Name="textBlock1" Text="姓名:" VerticalAlignment="Top" />
  29. <TextBlock Height="30" HorizontalAlignment="Left" Margin="33,116,0,0" Name="textBlock2" Text="职业:" VerticalAlignment="Top" />
  30. <TextBox Height="72" HorizontalAlignment="Left" Margin="116,25,0,0" Name="txtName" Text="" VerticalAlignment="Top" Width="292" />
  31. <TextBox Height="72" HorizontalAlignment="Left" Margin="116,104,0,0" Name="txtPos" Text="" VerticalAlignment="Top" Width="292" />
  32. </Grid>
  33. </Grid>
  34. </phone:PhoneApplicationPage>
[csharp] view plaincopyprint?
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Documents;
  8. using System.Windows.Input;
  9. using System.Windows.Media;
  10. using System.Windows.Media.Animation;
  11. using System.Windows.Shapes;
  12. using Microsoft.Phone.Controls;
  13. using System.IO.IsolatedStorage;
  14. namespace PhoneApp1
  15. {
  16. public partial class MainPage : PhoneApplicationPage
  17. {
  18. // 声明一个IsolatedStorageSettings变量。
  19. IsolatedStorageSettings MySetting = IsolatedStorageSettings.ApplicationSettings;
  20. // 构造函数
  21. public MainPage()
  22. {
  23. InitializeComponent();
  24. }
  25. protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
  26. {
  27. base.OnNavigatedFrom(e);
  28. MySetting["name"] = this.txtName.Text;
  29. MySetting["pos"] = txtPos.Text;
  30. // 保存
  31. MySetting.Save();
  32. }
  33. protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
  34. {
  35. base.OnNavigatedTo(e);
  36. // 当导航到页面,读入数据。
  37. if (MySetting.Contains("name"))
  38. {
  39. txtName.Text = MySetting["name"] as string;
  40. }
  41. if (MySetting.Contains("pos"))
  42. {
  43. txtPos.Text = MySetting["pos"] as string;
  44. }
  45. }
  46. }
  47. }

好的,看,是不是很简单?

隔离存储就吹到这儿了,从下一篇文章开始,我们不玩抽象,我们来一些“所见即得”的东东,一起当一回山寨画家,从下一节开始,我们一起讨论图形、画刷、绘图相关的内容。

转载于:https://www.cnblogs.com/songtzu/archive/2012/07/24/2607126.html

Windows Phone开发(29):隔离存储C 转:http://blog.csdn.net/tcjiaan/article/details/7447469...相关推荐

  1. Windows Phone开发(27):隔离存储A 转:http://blog.csdn.net/tcjiaan/article/details/7425212...

    在很多资料或书籍上都翻译为"独立存储",不过,我想了一下,决定将IsolatedStorage翻译为"隔离存储",我想这样会更方便大家对这一概念的理解. 关于何 ...

  2. Windows Phone开发(28):隔离存储B 转:http://blog.csdn.net/tcjiaan/article/details/7436959...

    上一节我们聊了目录的操作,这一节我们继续来看看如何读写文件. 首先说一下题外话,许多朋友都在摇摆不定,三心二意,其实这样的学习态度是很不好的,如果你对Windows phone开发有兴趣,如果你真想学 ...

  3. Windows Phone开发(39):漫谈关键帧动画上篇 转:http://blog.csdn.net/tcjiaan/article/details/7550506...

    尽管前面介绍的几种动画会让觉得很好玩了,但是,不知道你是否发现,在前面说到的一系列XXXAnimation中,都有一个共同点,那就是仅仅针对两个值的目标值之间产生动画,如果使用By,将在原值和加上By ...

  4. Windows Phone开发(7):当好总舵主 转:http://blog.csdn.net/tcjiaan/article/details/7281421...

    吹完了页面有关的话题,今天我们来聊一下页面之间是如何导航的,在更多情况下,我们的应用程序不会只有一个页面的,应该会有N个,就像我们做桌面应 用开发那样,我们一个应用程序中可能不止一个窗体(极简单的程序 ...

  5. Windows Phone开发(46):与Socket有个约会 转:http://blog.csdn.net/tcjiaan/article/details/7669315...

    不知道大家有没有"谈Socket色变"的经历?就像我一位朋友所说的,Socket这家伙啊,不得已而用之.哈,Socket真的那么恐怖吗? 其实这话一点也不假,Socket有时候真的 ...

  6. Windows Phone开发(16):样式和控件模板 转:http://blog.csdn.net/tcjiaan/article/details/7367260...

    在前面资源一文中也提过样式,样式就如同我们做HTML页排版时常用到的CSS样式表,它是对于特定娄型的可视化元素,应该可以直接说是针对控件的一种可重用的属性设置列表,这样对于需要设置相同属性值的同类型的 ...

  7. Windows Phone开发(32):路径之PathGeometry 转:http://blog.csdn.net/tcjiaan/article/details/7469512...

    说起路径这玩意儿,其实说的就是Path类,它藏在命名空间System.Windows.Shapes下,应该好找,它有一个很重要的属性Data,你不妨在"对象浏览器"中把它抓出来看看 ...

  8. Windows Phone开发(13):如何规范用户的输入行为 转:http://blog.csdn.net/tcjiaan/article/details/7341513...

    很多时候,我们对用户的操作或输入做一定程度的限制,以避免发生不必要的异常或错误,因此,对一些特殊的类型,进行输入限制是很有必要的. 通改变屏幕键盘的显示模式可以规范和告诉用户, 这里应该输入什么. 要 ...

  9. Windows Phone开发(36):动画之DoubleAnimation 转:http://blog.csdn.net/tcjiaan/article/details/7521388...

    从本节开始,我们将围绕一个有趣的话题展开讨论--动画. 看到动画一词,你一定想到Flash,毕竟WP应用的一个很重要的框架是Silverlight,在WP中也发挥了Silverlight的许多优点,可 ...

最新文章

  1. 计算机平均数的函数,Excel2010
  2. 你的 IDEA 酷不酷?
  3. 大数据领域可以应聘的岗位
  4. 设置过mysql远程连接后仍然无法进行远程连接 (mysql mysql报错2003 can't connect)
  5. 使用NVM管理Node - Windows
  6. 【Python】模块学习之ConfigParser读写配置信息
  7. Hyperloop,让发布简洁高效
  8. 大麦云原生边缘计算探索,让观众剧院看戏也能实现个性化
  9. java string sscanf_倾情奉献——JAVA sscanf函数!!!
  10. docker学习笔记18:Dockerfile 指令 VOLUME 介绍
  11. 因为这几个TypeScript代码的坏习惯,同事被罚了500块
  12. [序列化] SerializeHelper--序列化操作帮助类 (转载)
  13. 新手入门:Spring的一些学习方法及意见
  14. java rxtx 串口_Java使用RXTX进行串口SerialPort通讯
  15. Dotween : Look rotation viewing vector is zero
  16. Matlab识别拨号音,电话拨号音识别全解.ppt
  17. 今日分享一些好看的壁纸,有没有你喜欢的
  18. python项目作业_期末作业.py · 光辉/python练手小项目 - Gitee.com
  19. 电脑睡眠后启动 耳机没有声音 手动启动 -已解决
  20. Docker基础-使用Dockerfile创建镜像

热门文章

  1. GitHub入门:如何上传与下载工程?
  2. 基于Netty的百万级推送服务设计要点
  3. 单机安装ZooKeeper
  4. module_param 用于动态开启/关闭 驱动打印信息
  5. LVS负载均衡(3)——LVS工作模式与工作原理
  6. android 双向滑动 seekbar
  7. 企业员工工资管理系统
  8. 李洪强-C语言2-字符串
  9. MySql创建一个存储过程
  10. Smart Pointer