资源
功能和要求
- (Mainpage.xaml.cs)在MainPage中点击checkbox出现横线,输入数据(选择图片),挂起并关闭程序,重新启动时,程序显示在Mainpage界面,并且点击的checkbox与对应横线,数据与图片都存在。
- (Newpage.xaml.cs)在NewPage中输入数据(或选择图片),挂起并关闭程序,重新启动时,程序显示在Newpage界面,数据与图片都存在。
功能实现
对week3项目的修改
因为week3的部分实现,不满足week4的设计,所以要对week3修改,主要原因是OnNavigationTo这个函数,第二个参数,在week3传递自定义参数到NewPage,但是week4要求保存现场,没法序列化自定义的复杂变量,所以将所有变量写到App.xaml.cs中,采用全局变量的方法,所以无需在页面中传值。
public bool issuspend = true;
public string currentId;
public ListItemViewModels ViewModel;
public BitmapImage srcImage;
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
ViewModel = new ListItemViewModels();
}
这样的改变会造成其他页面的相应的改变,public ListItemViewModels ViewModel = ((App) App.Current).ViewModel;
这样可以不改变MainPage.xaml的绑定书写,这样的赋值,经测试不是引用,所以应该还要将改动的内容改回App中的ViewModel,我是直接用((App) App.Current).ViewModel
,所以代码看起来不太美观,改动也比较大。
具体实现
MainPage的实现
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
bool suspending = ((App)App.Current).issuspend;
if (suspending)
{
var composite = new ApplicationDataCompositeValue();
composite["Title"] = TitleBlock.Text;
composite["Details"] = DetailBlock.Text;
composite["Date"] = Date.Date;
composite["Visible"] = ((App)App.Current).ViewModel.AllItems[0].Completed;
ApplicationData.Current.LocalSettings