【UWP应用开发学习】如何各页面公用一个对象

    首先要说的是,我只是一名初学UWP应用开发的大学生。文章内记录的只是十分简单的道理,写出来的目的是方便像我一样初学而没能轻易找到教程的新手。也可能是我使用的关键词不对,找了很久才找到方法。

    教程的例子是我正在完成的课堂作业。希望在Newpage中将对象传给MainPage使用。一开始使用的方法是页面传值,调用Navigate这个函数传参(浅拷贝),再在目标页面接受(重写OnNavigatedTo函数),然而因为我的目标页面是Mainpage(打开应用即进入),初次打开页面时e.Parameter内的参数并非NewPage中传来,无法转换使用,会在运行时报错。如果添加检测e或者e.Parameter是否为空来判断是否运行使用该参数的代码,会发现这两个从刚开页面时就已经不为空。由于我学艺不精,也没能查到相关的解释,只能放弃页面传值的方法。如果可以的话还请各位赐教。

    想学习页面传值的可以移步 Windows 10 UWP页面跳转and传值 学习。


开始:

    ①首先在App的Class中创建你希望全局调用的变量,注意不要写进其他函数内。


    ②当你在其他Page希望调用这个变量的时候,使用该方式调用:

    (Application.Current as App).变量名

    具体如图所示

    同理在使用的页面的xaml也如此调用:



作业使用效果:

【UWP应用开发学习】如何各页面公用一个对象_第1张图片

一开始是没有Item的(MainPage)

【UWP应用开发学习】如何各页面公用一个对象_第2张图片

在NewPage中创建TaskItem的对象并添加进全局变量的list中

【UWP应用开发学习】如何各页面公用一个对象_第3张图片

返回MainPage,已成功添加。


上面还运用了页面导航和数据绑定等,不在本文讨论范围所以略过。

关于数据绑定:本人认为 UWP入门(十二)--数据绑定用法 写得很好,例子也简单易懂。不过如果希望UI和后台数据同步更新需把List换成ObservableCollection。

在网上查资料的时候还看到可以通过创一个类专门保存变量的方法,我没有去尝试,应该是一个使数据更易管理的方法。

由于截图内的软件只是个人小作业,所以可能背景、选图等不太美观,请原谅。

上文引用的网址如有冒犯请告诉我,十分抱歉。


————————————————更新(2018.3.24)

文章开头提到的页面传值,e开始不为空是因为app.xaml.cs中的定义


理论上修改这里的参数就可以在后面成功判断e的值,不过本人尚未尝试。

你可能感兴趣的:(C#,UWP)