什么决定了NavigationCommands.BrowseBack是否调用页面构造函数?

问题描述

| 我有两页逻辑相似。加载页面,单击一些将显示/隐藏其他按钮的按钮,继续下一页。当我单击下一页时,如果单击“后退”按钮,则会返回上一页。 所不同的是,当我单击“后退”按钮时,一个页面(FirstPage)将被调用构造函数,该按钮具有重置认设置的调用。另一页(SecondPage)没有调用构造函数,我不确定为什么。
public FirstPage()
{
  InitializeComponent();
  displayStuff();
}
FirstPage已将“ 1”设置为“ 2”。
public SecondPage(object arg1,object arg2)
{
  InitializeComponent();
  displayStuff(arg1,arg2);
}
页面还将“ 1”设置为“ 2”。这两个页面不继承任何内容,没有任何内容可以覆盖任何属性。我可以看到的唯一区别是空的构造函数,所以我尝试给SecondPage一个空的构造函数,但仍然没有运气。 我是WPF的新手(我每6个月进行一两个小时的研究),所以我缺少什么呢? 如果需要的话,这是后退按钮。
<Button Command=\"{x:Static NavigationCommands.browseBack}\" />
编辑:当我单击后退按钮时,SecondPage不会保持其状态。它只是加载一个页面,因为尚未调用
displayStuff
。 导航代码
Navigateto(new SecondPage(arg1,arg2));

protected void Navigateto(Page page)
{
  NavigationService.Navigate(page);
}
    

解决方法

我创建了一个类似的示例应用程序,并且具有类似的行为。我发现,当您返回页面时,除非该页面是日记中的第一页,否则不会调用构造函数 在WPF中的导航中阅读此部分:   使用日记将页面导航回页面时,将执行以下步骤:         Page(后堆栈顶部的日记条目)被实例化。   用页面的日记条目中存储的状态刷新页面。   页面将导航回去。    祝好运!     ,阅读Paul Stovell关于WPF导航的文章后,我想要显示的内容无法正常工作。   导航时,如果单击\“ Back \”,则WPF可能无法知道要传递给构造函数的值;因此,它必须使页面保持活动状态。这是跟踪输出: 由于WPF无法调用构造函数,因此不会。它只会使页面保持活动状态。 他继续提到,如果您不通过URI导航,则work1 work无效,并且每次都调用ѭ10each和
Unloaded
,因此我可以将所有逻辑移到那里,而无需构造函数在背面导航中被调用。