我只是在想什么。我有一个加载页面的框架,目前每个页面都有一个Page_Loaded
方法,每次访问页面时都会运行。这工作得很好,但是如果我使用导航转到以前访问过的页面,我会注意到错误。返回页面后,再次调用Page_Loaded
,我不想要。
使用调试时,我注意到InitializeComponent
仅在第一次实现页面时被调用,并且想知道我是否可以在调用之后简单地放置Page_Loaded
代码,如下所示:
public partial class MyPage: Page
{
public MyPage()
{
InitializeComponent();
//======> To Here
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
//Put Code from here <======
}
}
这可以解决我的问题,但这是一个不好的做法?如果是这样,我可能会遇到什么问题?
谢谢, 钢钣
答案 0 :(得分:5)
在构造函数中执行某些操作是合法的。我认为这很好。
WPF在对象/等的可访问性方面不太像ASP.NET。它有点宽松,所以在构造函数中做某事并不是引用它在ASP.NET中的禁忌。
答案 1 :(得分:1)
正如您所指出的,每次刷新页面时都会触发Page_Loaded
事件,因此如果您希望代码只执行一次,那么将它放在构造函数中就是合乎逻辑的位置。
根据您需要多少代码,您可能需要考虑将其重构为另一种方法 - 但这纯粹是个人品味(或者可能遵循编码标准)。
<强>更新强>
我猜想,因为用于生成tehBuildings
的查询返回null(说明显而易见),然后在调用getBuildings
之前需要调用其他一些代码。在没有看到原始代码的情况下,我不想说现在缺少什么。