WPF,在InitializeComponent之后直接放置代码的不良做法?
我只是想知道什么。 我有一个加载页面的框架,目前每个页面都有一个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 <====== } }
这可以解决我的问题,但这是一个不好的做法? 如果是这样,我可能会遇到什么问题?
谢谢,Kohan
在构造函数中执行某些操作是合法的。 我觉得这很好。
WPF在对象/等的可访问性方面不太像ASP.NET。它有点宽松,所以在构造函数中做某事并不是引用它在ASP.NET中的禁忌。
正如您所指出的,每次刷新页面时都会触发Page_Loaded
事件,因此如果您希望代码只执行一次,那么将它放在构造函数中就是合乎逻辑的位置。
根据您需要多少代码,您可能需要考虑将其重构为另一种方法 – 但这完全取决于个人品味(或者可能遵循编码标准)。
UPDATE
我猜想,因为用于生成tehBuildings
的查询返回null(说明显而易见),然后在调用getBuildings
之前需要调用其他一些代码。 如果没有看到原始代码,我不想说现在缺少什么。