チェックボックスやコンボボックスなど、ウィンドウに多くのコントロールがあります。CheckBox.IsChecked イベントを追跡したいので、Windows レベルでイベント ハンドラーを次のように定義しました。
<Grid CheckBox.Checked="OnModified" CheckBox.Unchecked="OnModified">
問題は、項目をマウスでクリックした直後に ComboBox によって同じイベントが発生することです。イベント ハンドラーは、ToggleButton ではなく、CheckBox の Checked イベントのみをキャプチャする必要があると考えました。何か見逃しましたか?
編集: 以下で指摘したように、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 オブジェクトに対してのみ使用されます。
さて、私は彼を誤解しましたか、それとも彼のメモは間違っていますか?