执行ApplicationCommands.Close时实际发生了什么

时间:2011-01-03 06:44:18

标签: wpf command

我想标题中的问题已经足够清楚了。当我打电话给

时会发生什么

ApplicationCommands.Close.Execute(null,null)

来自我的viewmodel类。

我有一个显示用户控件的modeldialog。我有一个命令绑定到usercontrol中的一个按钮,该按钮在viewmodel中执行。我想在执行命令后关闭对话框。可以使用上面的命令来完成到已执行事件的结尾。

但我想知道这是否是正确的方法。这会导致任何不良影响吗?

1 个答案:

答案 0 :(得分:3)

不幸的是,这不起作用。

ApplicationCommands.Close是一个RoutedUiEvent,它需要一个Commandtarget(任何IInputelement)。它使用此命令目标来引发routedevent。

然后,您可以使用命令绑定来处理此路径。

从ViewModel中,您可以将ApplicationCommands.Close绑定到Close Button,然后在窗口中处理路由关闭事件。

但是,在执行另一个命令之后,由于没有CommandTarget(第二个空值),您无法在ViewModel中调用ApplicationCommands.Close.Execute(null,null)

还有其他一些类似How should the ViewModel close the form?的主题,详细介绍了实现此目的的各种方法。

http://adammills.wordpress.com/2011/02/16/mvvm-uses-for-applicationcommands-close/