2009-06-16 15 views
12

私のMainApplication Windowは、.ShowDialog()で新しいウィンドウを起動してモーダルになります。メインアプリケーションウィンドウがクリックされたときにモーダルWPFウィンドウをフォーカスするにはどうすればいいですか?

UploadWindow uploadWindow = new UploadWindow(); 
uploadWindow.ShowDialog(); 

ユーザーは、このウィンドウを開いたままにしておくことが多く、他のウィンドウでは失われる可能性があります。 MainApplicationがクリックされると、エラーのようなビープ音が鳴り、それと対話できなくなるので、モーダルウィンドウは期待どおりに適切にブロックされていますが、モーダルウィンドウがこの時点でフォーカスされていれば、まだ開いている。

現在、MainApplicationウィンドウがロックされているかのように見えます。

答えて

24

ダイアログの所有者を設定してみてください:

var uploadWindow = new UploadWindow(); 
uploadWindow.Owner = this; 
uploadWindow.ShowDialog(); 
+0

私が探していたもの。 –

+2

Ownerプロパティがデフォルトでは設定されていないことがちょっと奇妙です。しかし、チップのおかげで、いつか役に立つかもしれない。 – Oskar

+0

←これです。真剣に、あなたは「これ」という意味ですか? –

2

私は、誰かが同じ問題を抱えている場合は、すべての場合は、あなたが

Window.GetWindow(this) 
0

を使用することができ、私はこれを使用することができないという問題を持っています上記の解決策は同じ問題を解決しようとしました。 ここにテスト済みの検証済みソリューションがあります。 ウィンドウに移動xamlに移動して

ResizeM ode = "NoResize"

+0

これは、基礎となるモーダルダイアログに焦点を当てますか? –

+0

はい、私はすべての提案を上回って同じ問題に直面していましたが、ResizeModeとobjForm.ShowDialog();働いた –

1

MVVMを使用しているので、GUIからコードを作成していません。私はこれを使った。

var uploadWindow = new UploadWindow(); 
uploadWindow.Owner = Application.Current.MainWindow; 
uploadWindow.ShowDialog(); 
関連する問題