gpt4 book ai didi

c# - WPF 在 InitializeComponent 期间获取控件空引用

转载 作者:可可西里 更新时间:2023-11-01 03:13:28 25 4
gpt4 key购买 nike

所以我在 Window 的构造函数中调用的 InitializeComponent 方法正在运行 XML 并添加控件并将它们插入到它们的事件中。

因此,当其中一个控件的属性更改时,它会调用订阅该事件的方法。该方法引用了一个尚未构建的控件。

为什么这里会按这个顺序发生?它在 WinForms 中有效,因为直到所有控件创建之后,事件才被触发。有没有办法在 WPF 中强制执行此操作?

我看到的其他解决方案是

  • 我需要在初始化后订阅事件。

  • 每当我处理控件时,我都需要检查 null。

最佳答案

我也遇到了这个问题,并通过在 null 检查中包装访问 null 控件的行来解决它。这似乎有点像 hack 解决方法。

我认为 WPF 试图通过在 InitializeComponent() 期间调用我们的 Checked 事件来提供帮助,以努力确保基于复选框的初始状态执行任何 UI 逻辑(例如显示/隐藏相关组件)。我测试了默认情况下未选中 Checkbox,并且未调用事件处理程序,即使我将它连接到 Checked 和 Unchecked 事件。我什至在一个空白的 WPF 项目中复制了它,屏幕上只有一个复选框,它的行为是一样的。

此默认行为的问题显然是其他一些组件尚未初始化。我认为 WPF 应该等到所有组件都初始化后再默认触发 Checked 事件。这可能不被认为是错误,但无论如何我都会向相关的 MSDN 页面添加注释...

关于c# - WPF 在 InitializeComponent 期间获取控件空引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2518231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com