Silverlight 社区为使 XAML 的代码隐藏在文件中尽可能地无代码而付出了很多努力。这背后的真正动机是什么?
例如,使用命令而不是事件处理程序有什么好处?如果我有
<Button x:Name="SaveButton" Content="Save" Click="SaveButton_Click" />
...
private void SaveButton_Click(object sender, RoutedEventArgs e) {
_myViewModel.SaveChanges();
}
那为什么首选这个?
<Button x:Name="SaveButton" Content="Save" Command="{Binding SaveCommand}" />
显然,SaveCommand
在我的视图模型中将有效地调用SaveChanges()
.
这可能导致视图是 100% XAML 的情况,甚至在 XAML 中实例化视图模型,并且视图和视图模型之间的连接完全通过绑定完成。当然它很干净,但还有什么?灵活的?为什么?视图仍然需要使用正确的 ViewModel,所以如果两者之间的联系存在并且是隐式的,为什么不让它更明确呢?它还具有失去编译时支持的缺点。如果我将按钮连接到不存在的事件处理程序,编译器会告诉我。如果我绑定到一个不存在的命令,它不会。