Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf Windows Phone 8和Windows 8 RT NavigationCacheMode之间的差异_Wpf_Windows Phone 7_Windows Phone 8_Winrt Xaml - Fatal编程技术网

Wpf Windows Phone 8和Windows 8 RT NavigationCacheMode之间的差异

Wpf Windows Phone 8和Windows 8 RT NavigationCacheMode之间的差异,wpf,windows-phone-7,windows-phone-8,winrt-xaml,Wpf,Windows Phone 7,Windows Phone 8,Winrt Xaml,Windows Phone 8 NavigationCacheMode=NavigationCacheMode.Disabled是否与Windows 8 RT NavigationCacheMode=NavigationCacheMode.Disabled相同? 如果是这样,我们导航回的页面是否会在WindowsPhone8中再次创建(调用构造函数)? 如果再次创建页面,那么我如何在模拟器中重现该场景(在wp8的情况下)?据我所知,wp8中不存在这种情况。控制这种行为有两种方法 1) 调用您希望

Windows Phone 8 NavigationCacheMode=NavigationCacheMode.Disabled是否与Windows 8 RT NavigationCacheMode=NavigationCacheMode.Disabled相同? 如果是这样,我们导航回的页面是否会在WindowsPhone8中再次创建(调用构造函数)?
如果再次创建页面,那么我如何在模拟器中重现该场景(在wp8的情况下)?

据我所知,wp8中不存在这种情况。控制这种行为有两种方法

1) 调用您希望在每次页面加载时在On page navigated to事件中运行的任何代码,而不是在页面的构造函数中调用它。页面加载时(包括从锁屏加载)将始终执行下面的“LoadDataFromOnNavigatedTo()”方法


2) 首选选项是使用IoC容器,如MVVMLight中提供的容器,并控制ViewModels的实例化时间。然后,您可以选择实例化它们一次,并在应用程序范围内重复使用,或者以临时方式重复使用

请注意:在首次加载和回访时将调用OnNavigatedTo。我们正在OnNavigatedTo()中加载数据,不希望每次调用OnNavigatedTo时都一次又一次地获取数据。我们的问题是,如果遇到内存不足的情况,Windows Phone操作系统是否可以删除后堆栈中的一些页面?当用户返回时,该页面将再次创建,我们需要再次加载其数据吗?或者操作系统永远不会在windows phone的Backback中删除页面?当导航到某个页面时,手机和平板电脑上每次都会调用构造函数。但是当回到上一页时,在平板电脑上调用了构造器,但在手机上没有调用构造器。你能解释一下这种区别吗?有没有可能在手机上,当系统内存变低,然后再返回时,会在手机上调用构造?或者在手机上导航时永远不会调用构造函数?
 // Constructor
    public MainPage()
    {
        InitializeComponent();
        MessageBox.Show("Data Loaded from constructor");
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        MessageBox.Show("Data Loaded from onnavigated to");
        base.OnNavigatedTo(e);
    }