一天一天学 windows phone 引言 + 大概认知 之 保存恢复页面状态(八)
2013-09-01 12:53
295 查看
页面的状态 和上一章讲的 应用程序的状态类似。直接上例子。
我们新建一个项目 PhoneApp3. 然后在MainPage.xaml 页里面添加 一组 CheckBox控件如下:
和上一章一样,因为找5以上应用比较麻烦,因此我们在项目上 "右键“ -> ”项目属性“ -> 左侧” 调试“选项卡 -> 勾上"在调试且停用时候执行逻辑删除" 如图
运行模拟器,任意选中几个CheckBox 然后点开始,到桌面导航页,再退回当前页,发现选中的 CheckBox 又成为未选中状态。
接下来我们继续完善代码页。添加代码如下:
重写 OnNavigatedFrom 保存当前状态。代码如下:
代码下载 地址 http://download.csdn.net/detail/gongkepop/6191607
(写的不好 请见谅,有不对请留言告知我,免得误人子弟。)
我们新建一个项目 PhoneApp3. 然后在MainPage.xaml 页里面添加 一组 CheckBox控件如下:
<!-- ContentPanel - place additional content here --> <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <StackPanel> <CheckBox Name="lbi_apple" Content="apple" FontSize="40" IsChecked="False" /> <CheckBox Name="lbi_banana" Content="banana" FontSize="40" IsChecked="False" /> <CheckBox Name="lbi_orange" Content="orange" FontSize="40" IsChecked="False" /> <CheckBox Name="lbi_pear" Content="pear" FontSize="40" IsChecked="False" /> <CheckBox Name="lbi_mango" Content="mango" FontSize="40" IsChecked="False" /> </StackPanel> </Grid>
和上一章一样,因为找5以上应用比较麻烦,因此我们在项目上 "右键“ -> ”项目属性“ -> 左侧” 调试“选项卡 -> 勾上"在调试且停用时候执行逻辑删除" 如图
运行模拟器,任意选中几个CheckBox 然后点开始,到桌面导航页,再退回当前页,发现选中的 CheckBox 又成为未选中状态。
接下来我们继续完善代码页。添加代码如下:
//标识是否是第一次进入 bool isNewPage = false; // Constructor public MainPage() { InitializeComponent(); isNewPage = true; // Sample code to localize the ApplicationBar //BuildLocalizedApplicationBar(); }
重写 OnNavigatedFrom 保存当前状态。代码如下:
protected override void OnNavigatedFrom(NavigationEventArgs e) { base.OnNavigatedFrom(e); //保存状态 if (this.lbi_apple.IsChecked.HasValue) { State["apple"] = this.lbi_apple.IsChecked.Value; } if (this.lbi_banana.IsChecked.HasValue) { State["banana"] = this.lbi_banana.IsChecked.Value; } if (this.lbi_mango.IsChecked.HasValue) { State["mango"] = this.lbi_mango.IsChecked.Value; } if (this.lbi_orange.IsChecked.HasValue) { State["orange"] = this.lbi_orange.IsChecked.Value; } if (this.lbi_pear.IsChecked.HasValue) { State["pear"] = this.lbi_pear.IsChecked.Value; } }重写 OnNavigatedTo 方法 用来恢复当前状态。代码如下:
protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); //判断是否是第一次加载。如果是就不需要恢复状态。 if (!isNewPage) { return; } if (State.ContainsKey("apple")) { this.lbi_apple.IsChecked = (bool)State["apple"]; } if (State.ContainsKey("banana")) { this.lbi_banana.IsChecked = (bool)State["banana"]; } if (State.ContainsKey("mango")) { this.lbi_mango.IsChecked = (bool)State["mango"]; } if (State.ContainsKey("orange")) { this.lbi_orange.IsChecked = (bool)State["orange"]; } if (State.ContainsKey("pear")) { this.lbi_pear.IsChecked = (bool)State["pear"]; } isNewPage = false; }OK 重启运行模拟器,任意勾中几个选项,然后按开始回到桌面导航,再点后退回到当前页。之前选中 的状态被恢复了。
代码下载 地址 http://download.csdn.net/detail/gongkepop/6191607
(写的不好 请见谅,有不对请留言告知我,免得误人子弟。)
相关文章推荐
- 一天一天学 windows phone 引言 + 大概认知 之 保存恢复应用程序状态(七)
- 一天一天学 windows phone 引言 + 大概认知 之 URI映射(五)
- 一天一天学 windows phone 引言 + 大概认知 之 前进后退(六)
- 一天一天学 windows phone 引言 + 大概认知 之 导航(二)
- 一天一天学 windows phone 引言 + 大概认知 之 导航3事件(三)
- 一天一天学 windows phone 引言 + 大概认知 之 参数传递(四)
- WP7中页面之间传值和保存恢复数据状态
- 一天一天学 windows phone 引言 + 大概认知 之 生命周期4事件(一)
- asp.net的页面状态保存与恢复
- asp.net的页面状态保存与恢复
- WebForm —— 页面状态自动加载和保存(上)
- location.hash保存页面状态的技巧
- 理解asp.net保存页面状态值的原理
- Activity状态的保存和恢复
- Windows Phone 数据的保存和恢复
- 保存和恢复activity的状态
- eclipse重置页面恢复到最初布局状态
- Activity中的状态保存与恢复,这些是你应该知道的
- 页面无限跳转间如何保存页面状态
- 保存/恢复Activity和Fragment状态的最佳实践(译)