2012-06-26 34 views
0

我有一個主ViewModel和一個UserLoginViewModel。在用戶視圖模型中,我需要顯示Ok/Cancel選項的提示。我已經完成了這個鏈接http://www.deanchalk.me.uk/post/WPF-MVVM-e28093-Simple-e28098MessageBoxShowe28099-With-Action-Func.aspx。爲了避免Invalid-cross線程異常,我使用了一個調度程序。該代碼是這樣的在MVVM WP7應用程序中顯示提示

mainDispatcher.BeginInvoke(new MessageBoxDelegate 
        (
         (message, title) => { Popup(msg, ""); } 
       ), messageArgs); 

其中mainDispatcher是的MainView的調度和彈出式的類型是Func<string, string, MessageBoxResult>

的,它工作正常。問題是我無法從BeginInvoke方法中獲得結果。有沒有辦法從BeginInvoke方法中獲得結果? 如果沒有,我有什麼建議可以實現這個?

回答

0

顯然,你得到一個VAR的結果=彈出的結果(味精,「 「);

您需要評估BeginInvoke()內的結果,因爲BeginInvoke()下面的任何代碼都在BeginInvoke()之前運行。

+0

BeginInvoke的梅索德返回不包含任何結果類型的DispatcherOperation的對象。 –

+0

你不關心BeginInvoke的結果。你關心Popup()的結果。你得到並評估這個結果INSIDE BeginInvoke。 –

+0

謝謝,這解決了我的問題。我使用了回調函數,並讓線程等待直到獲得結果 –

2

我不知道它如何融入MVVM模型,但我會建議你使用code4fun的MessagePrompt,而不是一個MessageBox

+0

謝謝你的建議,我會看看code4fun的MessagePrompt。不過還是我的問題是沒有答案的 –