【发布时间】:2026-02-09 14:35:01
【问题描述】:
我看到 Windows 有 Loaded 事件,但没有 Loading 事件(因为有 Closing 和 Closed 事件)。
我的期望是Loaded 事件会在窗口实际显示之前发生。但是,查看Window Lifetime Events,它表明Loaded 事件发生在Activated 事件之后。
我在Loaded 事件中放入了一些初始化代码,在窗口显示之后和我的内容出现之前有一个延迟。那么在窗口显示之前应该发生的用于窗口初始化的最佳事件处理程序是什么?
【问题讨论】:
-
是否有什么阻止您从构造函数初始化窗口内容?
-
@interstellarshadow:我需要访问窗口的元素,例如控件。我不希望可以从构造函数中获得。我认为这是我们有诸如
Loaded事件之类的事件的主要原因。 -
在窗口显示之前进行窗口初始化的最佳方法是在窗口的构造函数中设置窗口的
DataContext,并让控件通过绑定、模板等来填充自己。其他任何东西都是杂物。 -
ContentRendered事件不是在Loaded事件之前触发的吗? -
如果您在加载期间访问实际控件,那么可能有一种更优雅的方式来执行此操作。看看 MVVM(模型-视图-视图模型)模式。