WPF使用集合数据双向绑定
应该在实现了INotifyPropertyChanged的viewmodel使用observablecollection,在与xaml进行绑定时候。SaleCommodityItemViewModel这个object应该也是继承实现了接口的BaseViewModel。这样可以通知到UI的更新
public class VM:BaseViewModel
{
[AlsoNotifyFor("IsDisplaySaleCommodityList")]
public ObservableCollection<SaleCommodityItemViewModel> SaleCommodities { get; set; }=new ObservableCollection<SaleCommodityItemViewModel>();
public bool IsDisplaySaleCommodityList=> SaleCommodities.Count > 0;
}
假如你使用Fody,使用AlsoNotifyFor实现属性更改通知,需要注意的是当将此特性应用于可观察集合属性的时候,将不能在进行例如Add操作时候改变其他属性值,他无法得到通知,因为对于ObservableCollection集合来说,AlsoNotifyFor特性监听的是集合属性的对象引用SaleCommodities ,如果你重置SaleCommodities 对象为一个新的new的对象,将会得到通知。 为了Add等集合操作时候能够通知其他属性,应该使用如下方式
SaleCommodities.CollectionChanged += (s, e) =>
{
OnPropertyChanged("IsDisplaySaleCommodityList");
};