Когда вы связываете свои элементы управления WPF с ICollectionViews (происходит, когда XAML анализируется с вашим вызовом InitializeComponent - вы действительно должны определить привязки в XAML!), Элементы управления подписываются на требуемые события, опубликованные вашей коллекцией (например, CollectionChanged),
Ваше свойство коллекции является просто ссылкой на адрес памяти.Когда вы сгибаете это к новой коллекции (то есть к новому адресу), DataBinding не заметит.Вы не можете ожидать, что оригинальная Коллекция опубликует что-то вроде «IAmOuttaHere», и очевидно, что органы управления не будут слушать новую коллекцию, говорящую «Я новый парень».Но если я вижу это правильно, ваш фрагмент ничего не делает, кроме добавления обработчика событий в CurrentChanged (что означает, что вы наблюдаете, когда выбирается какой-то другой элемент в Combobox)
Привязка - это все об уведомлении, так что до тех пор, покаВы не говорите своим элементам управления, что коллекция была обменена, они будут придерживаться начальной коллекции.Пожалуйста, попробуйте реализовать INotifyPropertyChanged так:
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, и они автоматически оборачиваются вокруг любой коллекции, как только определяется привязка.
Надеюсь, это поможет
Sebi