2016-07-01 2 views
-1

Window.Show()またはWindow.ShowDialog()を使用せずにWPFアプリケーションを開発していますが、これは単純なMainWindowであり、プレースホルダー。UI.SubDialog()のようにUIスレッドをブロックする方法はありますか?WPF

しかし、問題は、アプリケーションがWindow.ShowDialog()のようにスレッドをブロックしない、つまりユーザーコントロールがMainWindowに埋め込まれているときにメインスクリーンに戻ることができるということですこれは、Foo Controlが閉じられた後にのみ呼び出されます。Foo Control()は、Foo Controlが閉じられた後でのみ呼び出されます。

FooA()は、Foo Controlが閉じられた後にのみ呼び出され、DialogResult = falseです。

私の場合はWindow.ShowDialogをシミュレートするために何ができますか?

ありがとうございました。

+0

現在のユーザーコントロール以外はすべてブロックしますか?そのユーザーコントロールは別のウィンドウにありますか? – Master117

+0

私は本当にあなたが何をしているのか理解していることを理解しています。私は、あなたがユーザーアクションで推測するいくつかのコントロールを表示するウィンドウを持っていることを理解しています。適切なビューモデルを持つコントロールのIsEnabledプロパティを使用して、コントロールが表示されたときにウィンドウの残りのコントロールにIsEnabledプロパティがfalseに設定されるようにします。 –

+0

こんにちは@ Master117ええ、それは私が欲しいです:現在のUserControlを除くMainWindowを呼び出す他のブロック。ありがとう –

答えて

0

あなたが望むものを得るための最良の方法は、私が最初の答えで言ったことです。 それが何を意味しているかをよりよく説明するために、サンプルとして小さなWPFアプリケーションを作成しました。 私のアプリケーションにはメインウィンドウがあり、3人の異なるユーザーがそれぞれいくつかの機能とクローズボタンを備えています。 メインウィンドウでは、ウィンドウ内にコントロールを作成して表示する3つのボタンを配置し、ユーザーコントロールが表示されているときに他のコントロールをロックし、ユーザーコントロールを閉じた後にすべてのコントロールを有効にするブール値プロパティをウィンドウに設定します。次のリンクを使用してサンプルをダウンロードできます。 http://blogs.dotnetwork.it/sabrina/download/SampleCode/DisableControls.zip

関連する問題