这也是刚刚学习到地知识,分享下
这个处理机制很好,有点墓碑机制的原理,区别是:
墓碑机制是在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)源码下载地址 WP7开发者: http://dev.ruanman.net/thread-21-1-1.html
{
//清空原来的state 状态内容 add
settings["state"] = "";
}