在 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 并不是要从视图中删除代码。主要是关于关注点分离。
在带有 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 并不是要从视图中删除代码。主要是关于关注点分离。