【问题标题】:How to keep page with full state in navigation wpf app如何在导航 wpf 应用程序中保持页面完整状态
【发布时间】:2009-05-13 23:10:26
【问题描述】:

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

我做错了什么?

【问题讨论】:

    标签: wpf navigationservice


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 解决了!谢谢!惊人的。甚至 WPF Unleashed 这本书也和 MSDN 说的一样。
    • 为什么我花了这么长时间才找到这个,谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 2023-03-27
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多