这是关于 MVVM 模式最佳实践的具体问题。我正在使用 MvvmLight 库。它是这样的:我的模型,比如“Flight”,实现了一些可以通过方法启动、暂停和停止航班的业务逻辑。无论是播放停止还是暂停飞行,每种方法都会执行其逻辑以实现功能。一个重要的变化变量是状态枚举,它指示飞行状态 - 播放、停止或暂停。如前所述,状态变量(和属性)在模型中定义。另一方面,飞行类由 ViewModel 类包装,该类包含一个 Status 属性,该属性包装了飞行模型中的状态变量,以及连接到飞行模型播放停止暂停方法的 RelayCommands。
问题就从这里开始:当我通过视图执行其中一个命令时,它会执行模型中的方法,因此状态变量本身会直接更改,但它只会在模型中更改.. ViewModel 中的状态属性不会知道包装变量是否已更改,因为它是直接更改的...这意味着如果某些视图元素绑定到状态属性,它不会在命令执行时更改..
我知道解决这个问题的几种方法,但我要求一个不会破坏 MVVM 模式的公平解决方案(比如在 Model 的飞行类中使用 INotifyPropertyChanged )