我有几个属性返回依赖于另一个属性值的值。更新绑定到依赖属性的UI的最佳方法是什么?请参阅下面的示例,当Children集合中的Quantity更改时,如何更新绑定到Parent对象的TotalQuantity属性的UI元素?
unsigned char *myString = "Here is a string";
答案 0 :(得分:0)
当您实例化ObservableCollection
时,您需要订阅CollectionChanged
事件。
Children.CollectionChanged += Children_CollectionChanged;
当从集合中添加/删除项目时,将调用此方法。您只需要通知TotalQuantity
已更改。
void Children_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
OnPropertyChanged("TotalQuantity");
}
如果您需要在孩子更改时更新用户界面上的TotalQuantity
属性,那么您只需订阅子{{1}事件。
因此,当您将项添加到集合中时,订阅该事件:
PropertyChanged
在您的事件处理程序中,您可以测试以查看哪些属性已更改。
Child myChild = new Child(); //Just an example, but you get the idea
myChild.PropertyChanged += myChild_PropertyChanged;
或者,您可以致电void myChild_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "Quantity")
OnPropertyChanged("TotalQuantity");
}
,而无需检查您是否为坏蛋。但我不推荐它,以防你的模型在未来获得更多属性。
在您从收集中移除儿童之前,不要忘记取消订阅该活动。