2

さまざまな種類のコントロール(ボタン、テキストボックス、コンボボックス、チェックボックスなど)を含むユーザーコントロールがあります。何かが変更されたかどうかを追跡する一般的な方法が必要です。ほとんどの場合、詳細は気にしません(つまり、どのテキストボックスが変更されたかを知る必要はありません)。私が見たときEventManager.RegisterClassEvent、これが私の解決策になると思いましたが、すぐにそうではないことに気付きました。この問題は、発射が多すぎることです。たとえば、同じコントロールにボタンとコンボボックスがある場合、コンボボックスのドロップダウンを押すとbutton.clickイベントも発生します。

WinFormsでは、usercontrol内のすべてのコントロールをループして、適切なイベント(TextBox.TextChanged、ComboBox.SelectedIndexChangedなど)をサブスクライブする必要がありました。これは面倒ですが、機能します。WPFでそれを行うためのより良い簡単な方法があることを願っています。

4

2 に答える 2

2

ルーティングされたイベント:

<UserControl x:Class="..." TextBoxBase.TextChanged="UserControl_TextChanged" 
Selector.SelectionChanged="UserControl_SelectionChanged" 
ToggleButton.Checked="UserControl_Checked" 
ButtonBase.Click="UserControl_Click" />
于 2010-12-05T21:57:30.273 に答える
0

このチェックを入れて、UserControl_Clickイベントのe.sourceを検証し、これを処理できます。

If(e.Source.GetType()==typeof(Button))
{
  // your code
}
于 2010-12-06T05:42:18.850 に答える