4

我正在使用页面和导航服务构建 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'.  

我究竟做错了什么?

4

1 回答 1

8

您需要告诉主机应用程序该页面应该保留在内存中,而不是每次您离开时都“卸载”并在您返回时“重新加载”。事实证明这很容易:只需将KeepAlive属性添加到您的页面声明中:

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

有趣的是,MSDN 文档是这样说的:

仅使用代码实例化和导航到的页面(例如,调用 Navigate)会自动保持活动状态。

我还没有发现这种情况,从你的问题来看,你似乎也没有这样发现。

于 2009-05-13T23:20:14.773 回答