PhO*_*NiX 1 wpf code-behind mvvm
在WPF中使用MVVM模型是否限制程序员编写代码?避免代码背后导致许多复杂问题,但另一方面,耦合上升成为一个问题.那么更好的是什么?
MVVM模型不会限制您编写代码.
它所推动的是View应该只依赖于ViewModel(以及模型上的ViewModel)
因此,如果您编写的代码实际上是在实现ViewModel,那么您将创建从ViewModel到View的依赖关系.
代码背后只有查看相关的东西是可以的
使用代码时丢失的东西是对代码的简单(单元)测试.
编辑
MVVM世界中的一个常见表达是"仅限XAML".尽管我喜欢简短明快的声明,但它倾向于偏离MVVM试图解决的实际问题以及它如何尝试解决它.
只要您坚持使视图依赖于ViewModel和模型上的ViewModel并努力实现(单元)可测试性,您就处于正确的轨道上.
编辑2
在视图处理中,事件应该只做两件事:更改视图本身或使用已更改的绑定通知ViewModel.通过在ViewModel上实现INotifyPropertyChanged,可以在ViewModel中通知VIEW更改.
以类似的方式,ViewModel可以通过将ViewModel命令绑定到View来响应View中的事件.
WPF按钮具有可以使用的Command属性.单击按钮时执行.
如果控件没有Command属性,或者您想在引发其他事件时执行命令,那么您只需将事件转换为ICommand的执行即可.
Microsoft已在Blend SDK中提供了该实现.从这篇文章:
... xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity..."
<Slider
<i:Interaction.Triggers>
<i:EventTrigger EventName="ValueChanged">
<i:InvokeCommandAction Command="{Binding MyCommand}"
CommandParameter="{Binding Text, ElementName=textBox}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Slider>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
472 次 |
| 最近记录: |