Gio*_*der 2 wpf mvvm mvvm-light
这是关于MVVM模式最佳实践的特定问题.我正在使用MvvmLight库.它是这样的:我的模型,说"飞行",实现了一些业务逻辑,可以通过方法启动,暂停和停止飞行.无论是停止还是暂停飞行,每种方法都会使其功能发生.一个重要的变量是状态枚举,表示航班状态 - 播放,停止或暂停.如上所述,状态变量(和属性)在模型中定义.另一方面,航班类由一个ViewModel类包装,该类包含一个包裹飞行模型中状态变量的Status属性,以及连接到飞行模型播放停止暂停方法的RelayCommands.
这里问题开始了:当我通过视图执行其中一个命令时,它会执行模型中的方法,以便状态变量本身直接更改,但它只会在模型中更改.ViewModel中的status属性不会知道包装变量是否已被更改,因为它已被直接更改...这意味着如果某个视图元素绑定到status属性,它将不会在命令执行时更改.
我知道有几种方法可以解决这个问题,但我要求一个公平的解决方案,不会破坏MVVM模式(比如在模型中的飞行类中使用INotifyPropertyChanged)
这类问题没有灵丹妙药解决方案.您的ViewModel和Model需要以允许信息传播到View的方式进行设计; 如果这是不可能的,那么设计是有缺陷的,需要改变.
以下是您应该研究的几件事:
RelayCommands.INotifyPropertyChanged.