ユーザーコントロールを配置していて、そのコントロールから直接新しいウィンドウを開くとき、親ウィンドウをオーナーにしてほしいが、自動では設定されない。
手動で設定するには新しいウィンドウの Owner プロパティに親ウィンドウを設定してやる必要がある。このとき問題となるのが、親ウィンドウをどうやって取得するかだ。
メインウィンドウなら
Application.Current.MainWindow
などでも取得できるが、すべてはそうもいかないので、Window.GetWindow メソッドを使う。
newWindow.Owner = Window.GetWindow(userControl);
このメソッドは引数にコントロールを渡すと、それの親ウィンドウ(ホストしているウィンドウ)を返す。 これを Owner プロパティに設定してやればばっちりだ。
Kenz Yamada(山田研二)。1984年生。大阪。ちょっとずつ好きなプログラム作ってます。
好きなものはカメラと旅行。ガジェットや身の回り、ちょっとこだわります。
詳しくは Web mixi で。