我目前有一个Windows Phone 8应用程序,它具有绑定到某个视图模型的用户控件。在视图模型中,我有一个命令属性,它绑定到视图上的按钮。
我想在视图中弹出一个消息框,询问“你确定要做X吗?”。如果是,则需要触发绑定到按钮的命令,否则它不需要触发命令。
我显然不想从视图模型中激活MessageBox,因为这是视图逻辑。那么如何在视图中显示MessageBox,然后不触发它绑定到它的命令。
编辑:让我说清楚。该命令位于viewmodel中并绑定在xaml中。 MessageBox节目位于后面的视图代码中(在按钮的单击事件中)。我想保持这样。我的问题是。按下按钮后,如何触发命令,MessageBox返回取消。
答案 0 :(得分:0)
好的,我找到了解决方案。
我创建了一个新的UserControl:ConfirmationButton,如果传递确认,则具有依赖关系ICommand属性。在控件中,如果MessagBox返回Yes,则手动触发命令。然后我使用这个新的UserControl,我需要这样的功能。
答案 1 :(得分:0)
您可以在按钮的点击事件上执行此操作。您可以在单击事件处理程序中弹出消息框。如果用户想要取消操作而不是简单地设置e.handle = true。
如果您不想使用代码隐藏,您可以创建自己的自定义按钮,您可以在其中覆盖按钮的OnClick()方法。在方法中显示消息框,如果用户想取消事件,则不要调用base.OnClick();
您可以参考以下链接,其中作者已解释了如何实现可取消命令:
http://www.codeproject.com/Articles/274982/Commands-in-MVVM#hdiw1