0

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

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

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

谢谢

4

2 回答 2

1

我在这里没有看到任何随意的东西。由于您的条件是“所有控件都有有效信息”,这可能发生在编辑任何控件之后,因此您需要收听来自所有控件的更改通知。

于 2012-02-29T02:29:10.993 回答
0

在由大约 10-15 个控件组成的普通旧对话框中,必须为每个控件处理每个更改通知似乎很随意,

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

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

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

于 2012-02-29T02:46:39.507 回答