【发布时间】:2011-01-03 06:44:18
【问题描述】:
我想标题中的问题已经足够清楚了。当我打电话时会发生什么
ApplicationCommands.Close.Execute(null,null)
来自我的视图模型类。
我有一个显示用户控件的模型对话框。我有一个命令绑定到在视图模型中执行的用户控件中的按钮。我想在命令执行后关闭对话框。可以使用上面的命令来完成到执行的事件结束。
但我想知道这是否是正确的方法。这会导致任何不良影响吗?
【问题讨论】:
我想标题中的问题已经足够清楚了。当我打电话时会发生什么
ApplicationCommands.Close.Execute(null,null)
来自我的视图模型类。
我有一个显示用户控件的模型对话框。我有一个命令绑定到在视图模型中执行的用户控件中的按钮。我想在命令执行后关闭对话框。可以使用上面的命令来完成到执行的事件结束。
但我想知道这是否是正确的方法。这会导致任何不良影响吗?
【问题讨论】:
很遗憾,这行不通。
ApplicationCommands.Close 是一个 RoutedUiEvent,它需要一个 Commandtarget(任何 IInputelement)。它使用这个命令目标来引发一个路由事件。
然后您可以通过使用命令绑定来处理此路由事件。
您可以从 ViewModel 将 ApplicationCommands.Close 绑定到关闭按钮,然后在您的窗口中处理路由关闭事件。
但是你不能在 ViewModel 中调用ApplicationCommands.Close.Execute(null,null),因为你没有 CommandTarget(第二个 null)
还有其他类似How should the ViewModel close the form? 的主题,详细介绍了实现这一目标的各种方法。
http://adammills.wordpress.com/2011/02/16/mvvm-uses-for-applicationcommands-close/
【讨论】: