我在一个窗口中有很多控件,包括复选框和组合框。我想跟踪 CheckBox.IsChecked 事件,所以我在 Windows 级别定义了一个事件处理程序为
<Grid CheckBox.Checked="OnModified" CheckBox.Unchecked="OnModified">
问题是 ComboBox 在鼠标单击一个项目后也会立即触发相同的事件。我认为我的事件处理程序应该只捕获 CheckBox 的 Checked 事件,而不是 ToggleButton 的。我错过了什么吗?
编辑:正如我在下面指出的那样,我认为它会以这种方式工作,因为我阅读了Matthew MacDonald 的书“ Pro WPF in C# 2010 ”。在第 164 页,他首先给出了这个示例代码:
<StackPanel Button.Click="DoSomething" Margin="5">
<Button Name="cmd1">Command 1</Button>
<Button Name="cmd2">Command 2</Button>
<Button Name="cmd3">Command 3</Button>
...
</StackPanel>
然后,他特别指出:
注意 Click 事件实际上是在 ButtonBase 类中定义的,由 Button 类继承。如果将事件处理程序附加到 ButtonBase.Click,则当单击任何 ButtonBase 派生控件(包括 Button、RadioButton 和 CheckBox 类)时,将使用该事件处理程序。如果将事件处理程序附加到 Button.Click,它仅用于 Button 对象。
现在,我误解了他,还是他的笔记错了?