我正在編寫一個應用程序(c#+ wpf),其中所有模式樣式對話框都作爲UserControl
在覆蓋主要Window
的半透明網格上實現。這意味着只有一個Window
,它保持所有公司應用程序的外觀和感覺。仿真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線程,因此阻止我們呃點擊確定。我知道我可以將一個委託函數作爲ShowMessageBox
函數的一個參數,它可以防止執行的反轉,但仍然會導致一些瘋狂的語法/縮進。
我是否錯過了一些顯而易見的東西,或者有沒有一種標準的方法來做到這一點?
鏈接的第一篇文章顯示瞭如何做到這一點的完美例子。 – Guy 2009-12-01 15:31:07