私はWPFが内部的にルーティングされたイベントによって実装されるルーティングされたコマンドをどのように実装するのかを理解しようとしています。 UIElement
クラス定義では、我々は、コードのこの部分を見つける:WPF RoutedCommand/RoutedEvent who/whatはイベントを発生させますか?
EventManager.RegisterClassHandler(type, CommandDevice.CommandDeviceEvent, new
CommandDeviceEventHandler(UIElement.OnCommandDeviceThunk), false);
そこから上、UIElement.OnCommandDeviceThunk
ハンドラは、それが到達するまで、自身が同じことをしたそのボディに呼び出す関数の引数を介してすべての情報に沿って渡します私たちが購読するCommandBinding.Executed
イベントで、レスポンスコードを実行します。
私が見つけられないと理解したいと思うものは、誰がCommandDevice.CommandDeviceEvent
を提起していますか?
例えば、ButtonBase
サブクラスオブジェクトのCommand
プロパティをApplicationCommandsコマンドにリンクした場合、何らかの形でCommandDeviceEvent
が呼び出され、どのように処理されますか?
私はGlobalEventManager
に多数のイベントハンドラのリストがあることを理解していますが、誰がそれらのハンドラをトリガするイベントを起こしたのかまだ分かりません。