如何在导航wpf应用程序中保持页面的完整状态

时间:2009-05-13 23:10:27

标签: wpf navigationservice

我正在使用网页和导航服务构建WPF应用 其中一个页面将对象作为构造函数

Sub New(ByVal o As Object)
    ' This call is required by the Windows Form Designer.
    InitializeComponent()

    ....

所以,要导航到它我

    Dim MyPage As New Page1(MyObject)
    MyBase.NavigationService.Navigate(MyPage)

当我在页面中编辑某些内容时会出现问题,然后返回,转发到MyPage会出现以下错误:

 Cannot create object of type 'Page1'. CreateInstance failed, which can be 
 caused by not having a public default constructor for 'Page1'.  

我做错了什么?

1 个答案:

答案 0 :(得分:6)

您需要告诉主机应用程序该页面应该保留在内存中,而不是每次导航时都“卸载”并在您返回时“重新加载”。结果非常简单:只需将KeepAlive属性添加到页面声明中:

<Page x:Class="..." KeepAlive="True">

有趣的是,MSDN文档说明了这一点:

  

实例化的页面   导航到仅使用代码(for   例如,调用Navigate),是   自动保持活力。

我没有发现情况如此,从你的问题来看,你似乎也没有找到它。