繁体   English   中英

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

[英]C#: WPF MVVM Command Binding vs. Event Callback

将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();
}

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

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

public ICommand ExitCommand {get; private set;}

public MyViewModel()
{
    ExitCommand = new DelegateCommand(ExitApp);
}

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

你是绝对正确的 - 如果处理程序是纯UI相关的,那么它不会以任何方式打破MVVM(尽管有些极端主义者说)。 MVVM是为解耦UI和业务逻辑而创建的模式 - 代码中的“UI事物”是可以的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM