如何解决什么决定了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
,因此我可以将所有逻辑移到那里,而无需构造函数在背面导航中被调用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。