使用MVVM进行File-> Exit的关闭操作有什么意义。
当您可以简单地为Click事件创建事件回调时,制作一个关闭命令似乎很多工作。对于这样与数据或业务逻辑没有任何关系的东西,我没有看到使用MVVM方法的意义。为什么不使用以下内容:
XAML:
<MenuItem Header="_File" Background="WhiteSmoke">
<MenuItem Name ="Exit" Tag="Exit" Header="Exit" Click="Exit_Click"/>
</MenuItem>
代码背后:
private void Exit_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
答案 0 :(得分:8)
对于那个的情况,你有一点争论。如果没有别的,关闭视图可以很容易地被解释为完全与视图相关,因此Click
事件处理程序从一开始就有意义。与视图相关的代码在视图中,而不是VM。
但是,我会挑战你的观点,Command
难以设置。使用DelegateCommand
:http://wpftutorial.net/DelegateCommand.html需要两行其他代码:
public ICommand ExitCommand {get; private set;}
public MyViewModel()
{
ExitCommand = new DelegateCommand(ExitApp);
}
处理程序无论哪种方式都是相同的。虽然Exit
可能不需要命令,但一般情况下,ICommand
是正确的方法,实际上并不是那么难。
答案 1 :(得分:1)
你是绝对正确的 - 如果处理程序是纯UI相关的,那么它不会以任何方式打破MVVM(尽管有些极端分子说过)。 MVVM是为解耦UI和业务逻辑而创建的模式 - 代码中的“UI事物”是可以的。