2016-03-08 101 views
2

导航页面后,是否有任何可能性来保留页面内容?例如,我有窗框和几个按钮,每个按钮都在某个页面上导航。在WPF页面之间导航

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

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

我知道在WP 8.1,你可以在构造函数中使用这行代码做到这一点:

this.NavigationCacheMode = NavigationCacheMode.Required; 

但是,我无法找到如何在WPF的相同。

回答

1

它背后的想法很简单。数据未存储在页面中,因为当您导航到页面时,正在创建页面的新实例。

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

0

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

public bool Navigate(
    object content, 
    object extraData 
) 

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

0

您可以在每个页面内使用KeepAlive = true;属性,您希望在后退堆栈中进行缓存。