有一些WPF和数据绑定的经验,但对PRISM和MVVM来说是全新的。
我正在研究Prism应用程序,我有一个shell和多个模块。
在我之前的WPF应用程序中,我有一个窗口datacontext(包含我需要的所有对象),然后我可以从窗口中的任何用户控件中简单地数据绑定。
在Prism的上下文中,拥有单个datacontext的正确方法是什么,让我们称之为ShellViewModel,然后将所有模块绑定到它的'对象和属性?因此,如果ShellViewModel中的一个属性发生了变化,这是由一个模块引起的,另一个模块可以通过数据绑定检测到它,然后可能触发一个样式?
可能有一种简单的方法可以做到这一点,但我是PRISM和MVVM的新手,并且完全混淆了我们如何正确绑定,特别是当涉及多个模块时?
此外,任何源代码和示例都会很棒。
答案 0 :(得分:1)
如果您拥有单一数据源,请将其作为服务提供给所有视图模型。
将其注册为单身,以便所有视图模型都获得相同的实例。如果您需要服务将更新推送到视图模型,请使其实现INotifyPropertyChanged
并让视图模型观察(通过PropertyObserver
最佳完成)。
请记住,视图模型是视图的数据上下文,它应该只在视图和数据源a.k.a.模型之间传递数据和事件,但不应该自己拥有数据。