2012-04-23 3 views
0

ボタン内でユーザーコントロールを使用すると、ボタンをクリックすると新しいダイアログウィンドウが作成されます。ウィンドウをウィンドウの上に表示したいと思います。私はこの問題は、所有者が(ユーザーコントロールがコールしていない実際のウィンドウを作っているかもしれないので?)を呼び出すウィンドウではないようです...これを行うにはWPFで新しいダイアログウィンドウを中心にする

 NewDialog dlg = new NewDialog(); 
     dlg.WindowStartupLocation = WindowStartupLocation.CenterOwner; 
     dlg.ShowDialog(); 

を試してみました。だから私は、...これを追加し、主に動作しますが、時々私の新しいウィンドウが新しいウィンドウを呼び出す必要があり、私はそれらを呼び出しているウィンドウを中心にしたいと、それは一般的なソリューションではありません

 dlg.Owner = Application.Current.Windows[0]; 

はない試してみましたプライマリウィンドウ。ユーザーがコントロールするウィンドウに所有者を正しく設定するためのよりよい方法がありますか?私は多くのバリエーションを試してきましたが、ウィンドウがまったく別の場所に登場したり、正しいと評価されずにエラーを投げたりするような、いくつかの癖があります。

提案がありますか?

+0

てみ 'dlg.Owner =この;' – LPL

+0

^- コンパイラエラーをスローし、「ウィンドウ」にユーザーコントロールの種類を変換することはできません –

答えて

4

のタイプがWindowではない場合は、ホストウィンドウを取得するためにスタティックWindow.GetWindow Methodを使用してください。

dlg.Owner = Window.GetWindow(this); 
+0

十分に簡単で、あなたの先生に感謝! –

関連する問題