我在窗口中有很多控件,包括複選框和組合框。我想跟蹤CheckBox.IsChecked事件,所以我定義在Windows級別的事件處理程序WPF:如何防止CheckBox.Checked事件被ComboBox作爲ToggleButton觸發?
<Grid CheckBox.Checked="OnModified" CheckBox.Unchecked="OnModified">
的問題是,同樣的事件是由組合框後,鼠標右鍵單擊某個項目也被解僱。我認爲我的事件處理程序應該只捕獲CheckBox的Checked事件,而不是ToggleButton的事件。我錯過了什麼嗎?
編輯: 正如我在下面所指出的,我認爲它會以這種方式工作,因爲我讀馬修·麥克唐納的書「臨WPF在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類中定義 和 通過按鈕繼承類。如果您 附加一個事件處理程序 ButtonBase.Click,被點擊時任 ButtonBase衍生控制 (包括按鈕,單選按鈕, 和CheckBox類),該事件處理 將被使用。如果將一個事件處理函數 附加到Button.Click,則該函數僅用於Button對象。
現在,我誤解了他,還是他的說明有誤?
你的事件處理程序是如何「附加」的?一些代碼會很好! – 2011-05-01 15:40:56
好的,我編輯了這個問題來包含一些代碼。 – newman 2011-05-01 15:54:48