Prism和MVVM数据绑定从模块到主shell数据上下文



对WPF和数据绑定有一定的经验,但对PRISM和MVVM完全陌生。

我正在Prism应用程序工作,我有一个外壳和多个模块。

在我以前的WPF应用程序中,我有一个单一的窗口数据上下文(我需要的所有对象),然后我可以简单地从我的窗口内的任何用户控件进行数据绑定。

在Prism的上下文中,拥有单个数据上下文的正确方法是什么,让我们称之为ShellViewModel,然后让所有模块绑定到它的对象和属性?因此,如果在ShellViewModel的一个属性的变化是由一个模块引起的,另一个模块可以检测到,通过数据绑定,然后可能触发一个样式?

可能有一个简单的方法来做到这一点,但我是PRISM和MVVM的新手,完全困惑我们如何才能做正确的绑定,特别是当有多个模块涉及?

如果你有一个单一的数据源,把它作为一个服务提供给你所有的视图模型。

将其注册为单例,以便所有视图模型获得相同的实例。如果你需要服务推送更新到视图模型,让它实现INotifyPropertyChanged,并让视图模型观察(通过PropertyObserver做得最好)。

请记住,视图模型是视图的数据上下文,它应该只在视图和数据源(即模型)之间传递数据和事件,而不应该拥有数据本身。

最新更新