【问题标题】:Showing Prompt in MVVM WP7 application在 MVVM WP7 应用程序中显示提示
【发布时间】:2012-06-26 07:50:06
【问题描述】:

我有一个主 ViewModel 和一个 UserLoginViewModel。从用户视图模型中,我需要显示带有确定/取消选项的提示。我已经按照此链接http://www.deanchalk.me.uk/post/WPF-MVVM-e28093-Simple-e28098MessageBoxShowe28099-With-Action-Func.aspx 中的说明完成了此操作。为了避免无效的跨线程异常,我使用了调度程序。代码是这样的

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

其中 mainDispatcher 是 MainView 的调度程序,Popup 的类型为Func<string, string, MessageBoxResult>

而且效果很好。问题是我无法从BeginInvoke 方法中获得结果。有什么方法可以从BeginInvoke 方法中得到结果吗? 如果没有,有什么建议可以实现吗?

【问题讨论】:

    标签: silverlight windows-phone-7 mvvm


    【解决方案1】:

    我不确定它如何适应 MVVM 模型,但我建议您使用 code4fun 的 MessagePrompt 而不是 MessageBox

    【讨论】:

    • 谢谢你的建议,我去看看code4fun的MessagePrompt。但我的问题仍然没有答案
    【解决方案2】:

    显然你得到的结果是 var result = Popup(msg, "");

    您需要在 BeginInvoke() 中评估结果,因为 BeginInvoke() 下方的任何代码都会在 BeginInvoke() 之前运行。

    【讨论】:

    • BeginInvoke 方法返回一个 DispatcherOperation 类型的对象,它不包含任何结果。
    • 你不关心 BeginInvoke 的结果。你关心 Popup() 的结果。您在 BeginInvoke 内获得并评估此结果。
    • 谢谢,解决了我的问题。我使用了一个回调函数并让线程等待直到得到结果
    猜你喜欢
    • 2011-05-08
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多