2012-06-26 33 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。不过还是我的问题是没有答案的 –