IsolatedStorageSettings 用法之 程序运行单击开始按钮再次启动程序还原

这也是刚刚学习到地知识,分享下


这个处理机制很好,有点墓碑机制的原理,区别是:

墓碑机制是在APP文件的Application_Launching、Application_Activated、Application_Deactivated、Application_Closing等方法中执行或者是在后台代码OnNavigatedFrom、OnNavigatedTo执行

而本次所讲到的是在后台代码中利用 IsolatedStorageSettings 独立存储中实现

本次实例是以TextBox为例子

首先在MainPage页面中添加个Button按钮,并给Click添加事件,跳转到新在窗体中Add.xaml

在编写Add.xaml文件前还需要对MainPage页面后台的初次加载添加判断

假如用户在Add.xaml页面编写内容后点击了开始按钮并回到开始屏幕时,然后又启动了应用程序,这时候就需要判断,用户是否保存了上次未保存地内容

首先在Loaded事件中添加如下代码

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
       //首先实例化IsolatedStorageSettings
       IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
       //定义一个变量用来存储状态信息
       string state = "";
       //检查IsolatedStorageSettings中是否存在状态信息"state"
       if (settings.Contains("state"))
       {
              //存在则读取出state状态信息到state变量中
              if (settings.TryGetValue<string>("state", out state))
              { 
                      //判断获取的状态信息是否是add  "add" 内容在后面页面中会提到
                      if (state == "add")
                      {
                             //如果读取到状态信息是add   如果是就说明用户未保存内容,则跳转到关闭前的状态页面add.xaml中
                             NavigationService.Navigate(new Uri("/ToubTest;component/Add.xaml", UriKind.Relative));
                      }
              }
       }
       IsolatedStorageTextBox.Focus();
}

下面是add.xaml页面中初始化的代码
在次之前先要定义一个全局的IsolatedStorageSettings

private IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

然后初始化中

void Add_Loaded(object sender, RoutedEventArgs e)
{
        string state = "";
        //同样判断是否包含state
        if (settings.Contains("state"))
        {
                //包含则取出state 赋值给state
                if(settings.TryGetValue<string>("state",out state))
                {
                        //如果state内容为add
                        if (state =="add")
                        {
                                string value = "";
                                //判断是否包含value
                                if (settings.Contains("value"))
                                {
                                        //取出value
                                        if (settings.TryGetValue<string>("value", out value))
                                        {
                                                //将value值显示在TextBox控件中
                                                this.AddTextBox.Text = value;
                                        }
                                }
                        }
                }
        }     
        //这段内容必须放在 判断是否包含state存在下面初始化   
        settings["state"] = "add";
        settings["value"] = AddTextBox.Text;
        AddTextBox.Focus();
        //将光标至于文字末尾
        AddTextBox.SelectionStart = AddTextBox.Text.Length;
}


在给TextBox 添加 TextChanged事件用于及时保存状态内容

private void AddTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
        settings["value"] = AddTextBox.Text;
}


最后给BackKeyPress返回按钮添加清空事件

private void PhoneApplicationPage_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
         //清空原来的state 状态内容 add
         settings["state"] = "";
}
源码下载地址 WP7开发者http://dev.ruanman.net/thread-21-1-1.html

转载于:https://my.oschina.net/AQ8RINEso/blog/61978

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值