Win8的页面导航

在Win8里面没有对话框概念,不同界面就是不同的页,有点类似于网页了。所以其导航很简单

Frame.Navigate(typeof(PageMoblieCode),obj);//obj参数

但是今天遇到一个问题,我跳转页面到另外一个,但是返回的时候我希望原先页面的值还存在。在ASP.NET里面很简单判断IsPostBack就好了。但是在Win8的里面怎么也没找的到。后来找了半天才知道,原来Win8的页面导航默认是不启用缓存的,后退页面的时候是恢复成初始状态。后来找到一个Page的一个NavigationCacheMode属性,意思是获取或设置一个导航模式,该导航模式指示此 Page 是否已缓存和在时间段内缓存项是否应保持不变,是一个枚举类型但是默认Disabled。

更改需要在构造函数中修改

public PageMoblieCode()
        {
            this.InitializeComponent();
            NavigationCacheMode = NavigationCacheMode.Enabled;//设置启用页面缓存
        }

这样返回的时候,之前的页面所做的修改就还存在。但应该在你想启用缓存的页面的构造函数里面设置 和ASP.NET一样。

还有一个就是 void OnNavigatedTo(NavigationEventArgs e),是当页面将要在Frame中显示的时候调用。其有一个NavigationMode 来判断当前页面是新来(New)的还是后退(Back)的还是前进(Forward)的,这样适合数据初始化

protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            if(e.NavigationMode == NavigationMode.New){
                //数据初始化
            }
        }

OnNavigatingFrom(NavigatingCancelEventArgs e)OnNavigatedFrom(NavigationEventArgs e) 两个还没用到

 

原文地址:https://www.cnblogs.com/richy/p/2749403.html