单击按钮时取消命令

时间:2014-01-14 12:35:47

标签: c# xaml windows-phone-8

我目前有一个Windows Phone 8应用程序,它具有绑定到某个视图模型的用户控件。在视图模型中,我有一个命令属性,它绑定到视图上的按钮。

我想在视图中弹出一个消息框,询问“你确定要做X吗?”。如果是,则需要触发绑定到按钮的命令,否则它不需要触发命令。

我显然不想从视图模型中激活MessageBox,因为这是视图逻辑。那么如何在视图中显示MessageBox,然后不触发它绑定到它的命令。

编辑:让我说清楚。该命令位于viewmodel中并绑定在xaml中。 MessageBox节目位于后面的视图代码中(在按钮的单击事件中)。我想保持这样。我的问题是。按下按钮后,如何触发命令,MessageBox返回取消。

2 个答案:

答案 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