关于页面导航和数据传递的简单总结

在页面导航时 我们可以用 this.NavigationService.Navigate(uri) 来实现,在导航时一般涉及到几个页面之间互相传递数据或者共享数据,

导航和传递数据请见:http://www.cnblogs.com/zouzf/archive/2012/03/19/2406224.html

共享数据请见:http://www.cnblogs.com/zouzf/archive/2012/03/19/2406914.html

在导航时同时在uri后面添加要传递的数据有个局限,就是只能够传递字符串,是字符串,不是字符串变量,比如你可以传 "aaa" 这个字符串过去,但对于 string s1 = "aaa" ,你没办法把变量s1传过去。共享数据的话建议用 为App类添加public属性、字段 的方式,简单易用。

在页面导航时难免也会用到 OnNavigatingFrom(NavigatingCancelEventArgs e)、OnNavigatedFrom(NavigationEventArgs e) 、 OnNavigatedTo(NavigationEventArgs e) 这三个方法,我们经常会在这三个函数里操作要共享的数据,但有些地方要注意:

OnNavigatingFrom(NavigatingCancelEventArgs e):在页面恰好变为非活动前触发,该函数确保在导航到下一个页面前被触发,可用

if (e.Uri.ToString().Contains(PageName))  来判断将要导航到的页面是否是你所希望的。注: PageName表示页面名称。你可以在里面操作个页面共享的数据,该函数确保这些共享的数据被操作之后才会被下一个页面使用。

OnNavigatedFrom(NavigationEventArgs e) :在页面不是活动页面时触发,但不保证导航到下一个页面前触发!就是程序可能先导航到下一个页面,什么时候有空了再回头来触发这个函数。如果你在这个函数里对一些各页面共享的数据进行赋值,该函数不保证这些共享的数据在下一个页面被使用前会得到该函数对它们的赋值!e.Content 可以获取将要导航到的页面,但由于该函数无法保证在导航到下一个页面前被触发,所以没什么意义,这个函数只能处理一些与其他页面(的数据)无关的操作。

OnNavigatedTo(NavigationEventArgs e):页面成为活动页面时触发,e.Content 表示当前页面。

原文地址:https://www.cnblogs.com/zouzf/p/2419294.html