我有一个ObservableCollection
属性以及此属性
public ListCollectionView ListView
{
get
{
return (ListCollectionView)(CollectionViewSource.GetDefaultView(List));
}
}
List是ObservableCollection
在WPF中,我有一个ListView控件绑定到ListView属性。
据我了解,如果我在代码中更改ObservableCollection,它应该反映在视图中。
但是如果我只做List = new ObservableCollection<SomeType>(someElements)
视图中的列表根本不会更新。如果我正在做MVVM,那么无论如何都要在代码中刷新它吗?
答案 0 :(得分:2)
为视图添加其他更改通知:
public ObservableCollection<...> List
{
get {...}
set
{
if (list != value)
{
list = value;
OnPropertyChanged("List");
OnPropertyChanged("ListView");
}
}
}
答案 1 :(得分:1)
您应该为PropertyChanged
举起ListView
个活动。
答案 2 :(得分:1)
在这种情况下,您必须实现INotifyPropertyChanged
并触发PropertyChanged
属性的ListView
事件以强制框架更新绑定。但是,一般情况下,您希望避免重新实例化,并始终更新相同的ObservableCollection
。
答案 3 :(得分:1)
你需要为List本身引发一个属性更改事件,要么使该属性成为DependancyProperty,要么使用INotifyPropertyChanged
答案 4 :(得分:1)
控件绑定到ListView
属性并侦听IPropertyChanged
事件,以便在基础视图更改时它可以自行更新。但是,当您更改基础集合时,它无法神奇地确定视图已更改。
直接解决方案是在更改PropertyChanged
的值后立即触发ListView
属性的List
。