アップデート2
残念ながら、WPFのほとんどのイベント(つまり、on )は、手動で/をUIElement
実装することによって実装されます。つまり、イベントメンバーは、または演算子の左側にのみ存在できます(つまり、「読み取る」ことはできません)。内部は、各イベントがイベントのコレクションに「委任」され、そのコレクションには割り当てられたイベントの要素のみが含まれるようになっています(たとえば、単一のイベントがある場合、そのイベントのコレクションには1つのエントリしかありません。残念ながら、イベントのコレクションには何が格納されますかハンドラーを表すは、コレクションをクエリするためにインスタンス化できる必要がある内部構造です。コレクションをクエリするために、その構造(、FWIW)のインスタンスをインスタンス化することはできません(add
remove
-=
+=
MouseLeftButtonDownEvent += somehandler;
RoutedEventHandlerInfo
UIElement.EventHandlersStore._entries
、またFWIW)。たとえば、可能であれば、QuickWatchウィンドウで特定のイベントをハンドラーに照会できます。
grid.EventHandlersStore._entries[
new RoutedEventHandlerInfo(UIElement.MouseLeftButtonDownEvent, false)]
ただし、デバッガーでは内部コンストラクターを呼び出すことはできません。
イベントだけをリストするものはありません。デバッガーでインスタンスのすべてのメンバー(ウォッチ、クイックウォッチなど)を確認でき、イベントには個別のアイコンがあります。次に、これらのそれぞれを展開して、イベントに割り当てられたメソッドを確認できます。例えば:
ご覧のとおり、この特定のインスタンスMyEvent
のメソッドが「割り当てられ」ています。t_MyEvent
更新:
イベントに複数のイベントハンドラーが割り当てられている場合、デバッガーはクイックウォッチでイベントのトップレベルに最後に割り当てられたメソッドのみを表示します。割り当てられたすべてのメソッドを表示するには、呼び出しリストにドリルダウンする必要があります。例えば:
..これは、との両方t_MyEvent
が。t_MyEvent2
の呼び出しリストにあることを示していますMyEvent
。ハンドラーがない場合、の値はMyEvent
になりますnull
。