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