【发布时间】:2014-01-14 21:28:31
【问题描述】:
我目前有一个 Windows phone 8 应用程序,它有一个绑定到某个视图模型的用户控件。在视图模型中,我有一个绑定到视图上的按钮的命令属性。
我想在视图中弹出一个消息框,询问“您确定要执行 X 吗?”。如果是,它需要触发绑定到按钮的命令,否则它不需要触发命令。
我显然不想从视图模型中触发 MessageBox,因为这是视图逻辑。那么如何在视图中显示 MessageBox,然后不触发它绑定的命令。
编辑:让我说清楚。该命令位于视图模型中并绑定在 xaml 中。 MessageBox 显示在后面的视图代码中(在按钮的单击事件中)。我想保持这样。我的问题只是。一旦按下按钮并且消息框返回取消,我如何不触发命令。
【问题讨论】:
-
可以在模型中显示MessageBox。并且消息框的结果可以通过事件返回给视图模型。
-
对不起,我没有得到这个问题。请忽略我的回答(我会删除它)。
-
为什么要在代码隐藏中显示消息框?如果您使用的是 MVVM,那么代码开始文件中应该没有任何内容。您应该将消息框的调用移动到模型中,并且在第一次单击时,如果用户选择“取消”,您可以将您的命令设置为空。
-
ViewModel 和 Model 不应该引用任何视图元素。 MessageBox 是一个视图元素,因此是视图的职责。您应该能够在没有视图的情况下对视图模型进行单元测试,并且混合责任也会阻碍这一点
标签: c# xaml windows-phone-8