在 WPF 中使用 Click 方法会破坏 MVVM 吗?

Does using the Click method in WPF break MVVM?

在带有 MVVM 的 wpf 界面中,我有一个关闭按钮,我正在使用按钮的 Click 方法关闭应用程序,如下所示:

<Button Content="Close"  Click="CloseFunction"/>

我的问题是,这样做是否破坏了 MVVM?

Does using the Click method in WPF break MVVM?

不一定,只要您不在视图 code-behind 的点击事件处理程序中实现任何 应用程序逻辑

例如,考虑以下实现,它简单地从事件处理程序调用视图模型的命令:

private void CloseFunction(object sender, RoutedEventArgs e)
{
    ViewModel vm = this.DataContext as ViewModel;
    if (vm != null)
        vm.SomeCommand?.Invoke(null);
}

它与以下 XAML 标记一样符合 MVVM,它从完全相同的视图调用完全相同的命令:

<Button Content="Close" Command="{Binding SomeCommand}" />

MVVM 并不是要从视图中删除代码。主要是关于关注点分离。