我正在开发基于MVVM模式的UWP应用。
我创建了绑定到父ViewModel的视图。父视图模型包含子ViewModel属性
Child ViewModel包含一些信息,尤其是“ NumberOfDays”和“ AmountPerDay”]
Parent ViewModel包含其自己的属性,尤其是“ DiscountAmount”和“ TravellingExpenseAmount”。父ViewModel还包含计算出的属性:-TotalHT =(NumberOfDays * AmountPerDay)-DiscountAmount + TravellingExpenseAmount
此属性绑定到屏幕快照中的“总税收”
注意,计算是基于两个ViewModel的属性。
问题如下:-当我从父级ViewModel更新属性(DiscountAmount或TravellingExpenseAmount)时,将引发TotalHT计算属性更改,并更新文本框值-当我从ChildViewModel更新属性(NumberofDays或AmountPerDay)时,即使从子ViewModel手动进行RaisePropoertyChange父级计算属性(RaisePropertyChange(“ Calculated Property”)),也不会发生任何事情。
所有ViewModel均实现INotifiedPropertychange(MVVM轻型工具包)。
更新:似乎只有从两个ViewModels创建的属性没有正确更新
您对解决方案有任何想法吗?
要更新值,必须触发。在这种情况下,触发器不会跳转,因此永远不会重新计算父级中的值。
您必须注意子控件之一是否引发该事件并进行分析。这里有两个解决方案:安排整个事件管理过程。也许有一个使用XAML的更漂亮的解决方案,但是我已经通过手动管理事件解决了这种情况。
[当我们创建一个子级时,父级会订阅其PropertyChanged事件(PropertyChangedEventHandler)。然后,在父级中,我们将收到其中包含PropertyName的PropertyChangedEventArgs参数。如果PropertyName是我们想要的-我们将重新计算父VM中的TOTAL。