gpt4 book ai didi

wpf - MVVM:模型状态更改时通知 View

转载 作者:行者123 更新时间:2023-12-02 05:37:40 25 4
gpt4 key购买 nike

这是一个关于 MVVM 模式最佳实践的特定问题。我正在使用 MvvmLight 库。它是这样的:我的模型,比如说“航类”,实现了一些可以通过方法启动、暂停和停止航类的业务逻辑。每个方法都按照其逻辑来实现功能,无论它是播放停止还是暂停飞行。一个重要的变化变量是状态枚举,它指示飞行状态——播放、停止或暂停。如前所述,状态变量(和属性)在模型中定义。 另一方面,飞行类由 ViewModel 类包装,该类包含包装飞行模型中状态变量的 Status 属性,以及连接到飞行模型播放停止暂停方法的 RelayCommands。

问题从这里开始:当我通过 View 执行其中一个命令时,它执行模型中的方法,以便状态变量本身直接发生变化,但它只在模型中发生变化。ViewModel中的状态属性不知道包装变量是否已经更改,因为它是直接更改的...这意味着如果某些 View 元素绑定(bind)到状态属性,它不会在命令执行时更改..

我知道有几种方法可以解决这个问题,但我要求的是一个不会破坏 MVVM 模式的公平解决方案(比如在 Model 的飞行类中使用 INotifyPropertyChanged )

最佳答案

没有 Elixir 可以解决这类问题。您的 ViewModel 和 Model 需要以允许信息传播到 View 的方式进行设计;如果这是不可能的,那么设计就有缺陷,需要改变。

以下是您应该研究的几件事:

  • 如果模型的状态修改方法记录为同步执行,则在 ViewModel 上创建将操作转发给模型的方法,然后立即查询其状态。使用这些方法来实现 RelayCommand
  • 如果模型的方法不是同步的,那么应该有某种机制可供模型的客户使用,以便在方法完成时通知他们。这可以通过连续回调、事件,甚至可能使用 INotifyPropertyChanged 来完成。

关于wpf - MVVM:模型状态更改时通知 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13581318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com