FrameworkElement、UIElement、Control、ContentControl、Decorator などの一般的なクラスから派生する WPF カスタム コントロールに対して呼び出されるイベントとオーバーライドの順序を示す参照として役立つ図を探しています。
私は特に、コントロールが表示され、操作できるようになるプロセスを処理するイベントとオーバーライドに関心があります。言い換えると、MouseLeftButtonDown など、操作の準備が整った後にユーザーが操作するコントロールを処理できるイベントを示すこの図にはあまり興味がありません。
私が探しているのは、この図のようなものです(これらのような図は、WPFウィンドウまたはアプリケーションのライフサイクルを説明しています) が、カスタム コントロール用です。
このページも見たことがありますが、私の意見では単純すぎるように思えます。Initialized
そのページは、基本的に、 、Loaded
、およびUnloaded
イベントがほとんどだと言っているようです。説明のために、カスタム コントロールで使用する必要がある一般的なイベント/オーバーライドのいくつかを以下に示します。
- コンストラクタ
Loaded
UnLoaded
IsVisibleChanged
OnApplyTemplate
OnOpened
Popupや ExpanderOnExpanded
などの、もう少し専門的なオーバーライドに加えて、
私が抱えている問題は、いつ次のようなことができるかを忘れVisualStateManager.GoToState(...)
てしまうことです(OnApplyTemplate
私が信じている最初の本当のチャンスです)。また、IsVisibleChanged など、使用する必要があるイベントを発見し続けます (このイベントは、ユーザーが自分のコントロールを含むタブに戻ったときに、「再読み込み/更新」状態の変更を行うコントロールが必要な場合に必要であることが判明しました) . だから私は、カスタムコントロールのために本当に注意を払うべきイベント/オーバーライド がまだ他にあるのだろうか? ここで、これらの事柄を相互に関連させて示す図が役立ちます。
これらのタイプのイベント/オーバーライドを考慮すると、この Silverlight チャートは私が探しているものにかなり近いですが、 WPFの場合です。その投稿に対する一部のコメント投稿者は、WPF のイベント/オーバーライドは Silverlight のものとは異なると言っています。 もしよろしければ、似たような図を教えていただけないでしょうか。
このようなダイアグラムの必要性をさらに説明するために、ContentControl から派生したカスタム コントロールで目撃した次の一連のイベントを考えてみましょう。
- アプリが起動しました。(私のカスタム コントロールは、最初のタブとは別のタブにあります。)
Initialized
呼び出されたイベント コールバックLoaded
呼び出されたイベント コールバック- (カスタム コントロールを含むタブをクリックします)
IsVisibleChanged
呼び出されたイベント コールバックOnApplyTemplate
呼び出されたオーバーライドLoaded
呼び出されたイベント コールバックLoaded
イベントコールバックが再度呼び出されましたLoaded
3 回連続で呼び出されるイベント コールバック- (コントロールが完全に表示され、操作できるようになりました)