すべてのモーダルスタイルのダイアログが、として実装されていて、メインWindow
をカバーする半透明グリッドの上にアプリケーション(c#+ wpf)を書いています。つまり、Window
が1つしかなく、すべての企業アプリケーションのルックアンドフィールを維持しています。 エミュレートShowDialog機能
MessageBox
表示するには、構文は次のとおりです。
CustomMessageBox b = new CustomMessageBox("hello world");
c.DialogClosed +=()=>
{
// the rest of the function
}
// this raises an event listened for by the main window view model,
// displaying the message box and greying out the rest of the program.
base.ShowMessageBox(b);
あなたが見ることができるように、だけでなく、実際には逆実行の流れであるが、その恐ろしく冗長な古典的な.NETバージョンに比べ:
MessageBox.Show("hello world");
// the rest of the function
は、私が本当に探していますと、ダイアログクローズイベントが、それによって提起されるまでbase.ShowMessageBox
から戻らないための方法ですが、私はこのようにGUIスレッドをぶら下げとせず、この待つことが可能であるかを確認カント私たちを防ぐそれでもOKをクリックしてください。私はShowMessageBox
関数の引数としてデリゲート関数を取ることができることを知っています。この種の関数は実行の逆転を防ぎますが、依然として狂った構文/インデントを引き起こします。
明らかなものがないか、これを行う標準的な方法がありますか?
リンクされた最初の記事は、これを行う方法の完全な例を示しています。 – Guy