イベント部材のみ-=
又は+=
操作者の左手側にあることを意味する2
残念なことに、WPF(すなわちUIElement
上)で最もイベントを手動add
/remove
を実装することによって実現される更新(すなわち、それは「読む」ことはできません)。内部は、各イベントがイベントのコレクションに「委任」され、そのコレクションには割り当てられたイベントの要素のみが含まれています(たとえば、単一のMouseLeftButtonDownEvent += somehandler;
がある場合、そのイベントのコレクションには1つのエントリしかありません)。コレクションを照会するために構造体のインスタンス(RoutedEventHandlerInfo
、FWIW)をインスタンス化することはできません(UIElement.EventHandlersStore._entries
、FWIW) 。たとえば、あなたは、あなたが特定のクイックウォッチ]ウィンドウのようなイベントのためのハンドラを照会することができできれば:。
grid.EventHandlersStore._entries[
new RoutedEventHandlerInfo(UIElement.MouseLeftButtonDownEvent, false)]
しかし、デバッガはあなたが内部のコンストラクタを呼び出すことはできません
という名前のイベントはありません。イベントはです。デバッガでインスタンスのすべてのメンバーを見ることができます(ウォッチ、クイックウォッチなど)、イベントには別個のアイコンがあります。これらのそれぞれを展開して、どのメソッドがイベントに割り当てられているかを確認できます。たとえば、次のように
あなたが見ることができるように、MyEvent
は、この特定のインスタンスのための方法t_MyEvent
を「割り当て」されています。
更新:あなたがイベントに割り当てられ、複数のイベントハンドラを持っている場合 は、デバッガだけ速い時計でのイベントのトップレベルの最後の割り当て方法が表示されます。 すべてメソッドが割り当てられていることを確認するには、呼び出しリストをドリルダウンする必要があります。たとえば:
。これはt_MyEvent
とt_MyEvent2
両方がMyEvent
のための呼び出しリストにあることを示しています。ハンドラがない場合、MyEvent
の値はnull
になります。
ありがとうございました。私の例では、 "_Grid"を展開するとどこかで "MouseLeftButtonDown"を見ることができますか?私は "ローカル"のウィンドウを見ていますが、何も見えません... – phil13131
おそらく、複数の代議員がイベントに割り当てられていますが、私はそれを含む答えを更新しました... –
私のプログラムでは、メソッドが各イベントに割り当てられていますが、例えば、 'MouseButtonEventHandler'です。私はinvocationListを探していたが見つかりませんでした。 WPFの 'Grid'のサンプルを親切に見せてもらえますか?たぶんそれは少し異なっているかもしれません。 – phil13131