当您将WPF控件绑定到ICollectionViews时(在使用InitializeComponent调用解析XAML时发生-您真的应该在XAML中定义绑定!),控件订阅由集合发布的所需事件(例如CollectionChanged)。
public class ViewModel : INotifyPropertyChanged
{
private ICollectionView myCollection;
public ICollectionView MyCollection
{
get
{
return this.myCollection;
}
set
{
this.myCollection = value;
this.OnPropertyChanged("MyCollection");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public void ExchangeCollection()
{
this.MyCollection = new CollectionView(....)
}
}
应该对MyCollection进行任何绑定。尽管就我个人而言,我并不自己定义ICollectionViews,因为它们并不像一个漂亮的IList那样好用,而且一旦定义了绑定,它们就会自动包装在任何集合周围。
希望这有帮助
塞比