0

ボタンがクリックされたときに新しいダイアログウィンドウを作成するウィンドウ内にユーザーコントロールがあります。ウィンドウを呼び出すウィンドウの上にウィンドウを表示したいと思います。私はこれをやろうとしました...

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

問題は、所有者が呼び出し元のウィンドウではないように見えることです (おそらく、実際のウィンドウではなく、ユーザー コントロールが呼び出しを行っているためでしょうか?)。というわけで追加してみました…

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

これはほとんどの場合機能しますが、新しいウィンドウが新しいウィンドウを呼び出す必要がある場合があるため、一般的な解決策ではありません。プライマリ ウィンドウではなく、呼び出し元のウィンドウの中央に配置する必要があります。ユーザーコントロールが含まれているウィンドウに所有者を正しく設定するより良い方法はありますか? 私は多くのバリエーションを試しましたが、ウィンドウがまったく別の場所に表示されたり、何かが正しく評価されずにエラーがスローされたりするという癖があるようです。

助言がありますか?

4

1 に答える 1

4

thisタイプでない場合は、Window静的なWindow.GetWindow メソッドを使用してホスト ウィンドウを取得します。

dlg.Owner = Window.GetWindow(this);
于 2012-04-23T21:04:25.790 に答える