我目前有一个windows 8应用程序,它有一个绑定到某些视图模型的用户控件。在视图模型I中,a有一个命令属性,该属性绑定到视图上的一个按钮。
我想在视图中弹出一个消息框,询问“您确定要做X吗?”如果是,则需要触发绑定到按钮的命令,否则不需要触发命令。
显然,我不想从视图模型中触发MessageBox,因为这是视图逻辑。因此,如何在视图中显示MessageBox,然后不触发绑定到它的命令。
编辑:让我说清楚。该命令位于视图模型中,并在xaml中绑定。MessageBox显示在后面的视图代码中(在按钮的单击事件中)。我想把它保存成这样。我的问题是。一旦按下botton并MessageBox返回Cancel,如何不触发该命令。
发布于 2014-01-14 12:56:48
好的,我找到了一个解决办法。
我创建了一个新的UserControl: ConfirmationButton,其中包含一个依赖ICommand属性,用于确认是否通过。在控件中,如果MessagBox返回Yes,则手动启动命令。然后,我在需要这种功能的地方使用这个新的UserControl。
发布于 2014-01-14 13:10:01
您可以在按钮的单击事件上这样做。您可以在单击事件处理程序中弹出消息框。如果用户希望取消操作,而不是简单地设置e.handle = true。
如果不想使用代码隐藏,可以创建自己的自定义按钮,其中可以覆盖按钮的OnClick()方法。在方法中显示消息框,如果用户想要取消事件,只需不要调用base.OnClick();
您可以参考以下链接,其中作者解释了如何实现可取消的命令:
http://www.codeproject.com/Articles/274982/Commands-in-MVVM#hdiw1
https://stackoverflow.com/questions/21113730
复制相似问题