将对话框中“确定”按钮的启用状态建立在有效控件项基础上的好方法是什么

本文关键字:控件 有效 基础上 是什么 方法 建立 状态 对话框 确定 启用 按钮 | 更新日期: 2023-09-27 18:26:02

即使我将按钮与从ICommand派生的类相关联,我仍然需要弄清楚按钮应该如何触发CanExecute方法并刷新其启用状态。我确实知道CanExecuteChanged事件,一个带有相关命令的按钮会为其注册,但请参阅以下段落了解为什么这很麻烦。

在一个由大约10-15个控件组成的普通旧对话框中,似乎随意地必须处理这些控件中每一个控件的每个更改通知,从而触发按钮命令上的CanExecuteChanged事件,导致按钮的启用状态受到CanExecute方法返回值的影响。即使在最后一句话中说明需要做什么也相当麻烦。

必须有一种更好的方式来编码WPF对话框,以便确认按钮(例如,OK)变灰,直到所有控件都有有效信息并在该时间点启用(即,当所有控件都正确填写时)。示例代码、想法和文章指针将不胜感激。

感谢

将对话框中“确定”按钮的启用状态建立在有效控件项基础上的好方法是什么

我在这里没有看到任何偶然的东西。由于您的条件是"所有控件都具有有效信息",因此在编辑任何控件后都可能发生这种情况,因此您需要侦听来自所有控件的更改通知。

在一个由大约10-15个控件组成的简单的旧对话框上随意处理每一个变更通知这些控件中的一个,

我不这么认为。每个Textbox、checkbox更改事件都由同一个处理程序处理,比如SetState(),它计算对话框的整体状态。每次编辑控件时,都会重新计算整个状态。

直到所有控件都具有有效信息

那么,该对象将具有布尔属性EnableOKButton,比如说,它是根据更新的状态设置的。然后,该属性被绑定到按钮的Enabled属性,因此它会自动更改,而不会处理无关事件。