Powershell WPF windowのイベントをトレースするサンプル

PowerShell

Windowクラス のイベント発生状況を確認したかったため、各イベントが発生する都度、コンソールに結果出力させるサンプル、これを実行してトレース結果の動きを見ているとWindowのイベント発生契機の理解が深まる。

コード例

add_XXXX.Invokeの中で、自作のトレース用のスタティックメソッドを呼び出すようにしている。

結果(起動時)

IsVisibleChanged、SizeChanged、LayoutUpdated、SourceInitialized、Activated あたりが初期化時のイベントのようだ。

sVisibleChangedこの要素の IsVisible プロパティの値が変更されたときに発生します。(継承元 UIElement)
SizeChangedこの要素の ActualHeight プロパティまたは ActualWidth プロパティの値が変更されると発生します。(継承元 FrameworkElement)
SourceInitializedこのイベントは、Win32 との相互運用をサポートするために発生します。 以下を参照してください。HwndSource
LayoutUpdated現在の Dispatcher に関連付けられた各種ビジュアル要素のレイアウトが変更されたときに発生します。(継承元 UIElement)
Activatedウィンドウがフォアグラウンド ウィンドウになったときに発生します。

しかし、起動時に一番発生しそうな(それっぽい)Inithalizedは呼ばれていなかった。なぜだろう

Initializedこの FrameworkElement が初期化されるときに発生します。 このイベントと同時に、IsInitialized プロパティの値が false (未定義) から true に変更されます。(継承元 FrameworkElement)

結果、終了(xボタンクリック時)

Closing と Closed が呼ばれている これがそんなものかなと思える。

Closedウィンドウが閉じるときに発生します。
ClosingClose() が呼び出された直後に発生します。これを処理して、ウィンドウが閉じるのをキャンセルすることができます。

引用

Window クラス (System.Windows) | Microsoft Docs

コメント

タイトルとURLをコピーしました