在WPF中的页面之间导航

时间:2016-03-08 09:59:09

标签: c# .net wpf xaml

在导航之后是否有可能保留页面内容。例如,我有一个带框架和几个按钮的窗口,每个按钮都在某个页面上导航。

frame.Navigate(new Page1()); //every button for different page

现在,例如,一个页面有一些文本块和按钮。如果单击文本块的按钮文本更改。当我转到其他页面并返回该页面时,textblock.Text将不会保存,它将恢复为默认值?如何保留它?

我知道在wp 8.1中你可以使用构造函数中的这行代码来完成它:

this.NavigationCacheMode = NavigationCacheMode.Required;

但是,我无法在WPF中找到相同的内容。

3 个答案:

答案 0 :(得分:1)

背后的想法非常简单。由于导航到页面时,数据未存储在页面中,因此正在创建页面的新实例。

您可以通过维护页面的静态实例来实现此目的。 即页面仅在第一次运行应用程序时创建。下次加载页面时,将保持状态。

答案 1 :(得分:0)

您可以使用Frame.Navigate()的重载版本:

public bool Navigate(
    object content,
    object extraData
)

extraData中,您可以将参数传递给要导航到的页面,通常是一个字符串。并且您在此字符串中放置的信息可以由加载的页面使用,以使用所需的数据初始化自己。

答案 2 :(得分:0)

您可以在每个要在后台堆栈中缓存的页面中使用KeepAlive = true;属性。