UWP-MVVM-计算的属性值更改时不更新值

问题描述 投票:0回答:1

我正在开发基于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”)),也不会发生任何事情。

enter image description here

所有ViewModel均实现INotifiedPropertychange(MVVM轻型工具包)。

更新:似乎只有从两个ViewModels创建的属性没有正确更新

您对解决方案有任何想法吗?

c# mvvm uwp calculated-field
1个回答
0
投票

要更新值,必须触发。在这种情况下,触发器不会跳转,因此永远不会重新计算父级中的值。

您必须注意子控件之一是否引发该事件并进行分析。这里有两个解决方案:安排整个事件管理过程。也许有一个使用XAML的更漂亮的解决方案,但是我已经通过手动管理事件解决了这种情况。

[当我们创建一个子级时,父级会订阅其PropertyChanged事件(PropertyChangedEventHandler)。然后,在父级中,我们将收到其中包含PropertyName的PropertyChangedEventArgs参数。如果PropertyName是我们想要的-我们将重新计算父VM中的TOTAL。

© www.soinside.com 2019 - 2024. All rights reserved.