C#:WPF MVVM命令绑定与事件回调

Sea*_*ton 3 c# wpf xaml mvvm

将MVVM用于File-> Exit的关闭操作有什么意义呢?

当你可以简单地为Click事件创建一个事件回调时,做一个关闭命令看起来很麻烦.对于这样与数据或业务逻辑没有任何关系的东西,我没有看到使用MVVM方法的意义.为什么不使用以下内容:

XAML:

<MenuItem Header="_File" Background="WhiteSmoke">
    <MenuItem Name ="Exit" Tag="Exit" Header="Exit" Click="Exit_Click"/>                
</MenuItem>  
Run Code Online (Sandbox Code Playgroud)

代码背后:

private void Exit_Click(object sender, RoutedEventArgs e)
{
    this.Close();
}
Run Code Online (Sandbox Code Playgroud)

Bra*_*NET 8

对于这种情况,你有一点争论.如果不出意外,关闭视图很容易被解释为完全与视图相关,因此Click事件处理程序从一开始就有意义.与视图相关的代码在视图中,而不是VM.

但是,我会挑战你的观念,Command即难以设置.使用DelegateCommand:http://wpftutorial.net/DelegateCommand.html需要两行额外的代码:

public ICommand ExitCommand {get; private set;}

public MyViewModel()
{
    ExitCommand = new DelegateCommand(ExitApp);
}
Run Code Online (Sandbox Code Playgroud)

处理程序是相同的方式.虽然Exit可能不需要命令,但总的来说,这ICommand是正确的方法,实际上并不那么难.