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之前需要调用其他一些代码。 如果没有看到原始代码,我不想说现在缺少什么。