Как обработать CompositeCollection with CollectionView функции?

Существует ли путь, который будет уведомлен, когда текущее местоположение CompositeCollection изменяется?

Мне должен был контролировать CompositeCollection CollectionView, любые идеи одобрены.

6
задан Shimmy 28 January 2010 в 12:54
поделиться

2 ответа

Вы можете обнаружить, когда текущий элемент изменился путем мониторинга IconglectionView.CurrengeChanged события вашего CollectionView. Для меня следующий код работает:

CompositeCollection cc = new CompositeCollection();
cc.Add(new CollectionContainer { Collection = new string[] { "Oh No!", "Fie" } });
cc.Add(new CollectionContainer { Collection = new string[] { "Zounds", "Ods Bodikins" } });
CollectionViewSource cvs = new CollectionViewSource { Source = cc };

// Subscribing to CurrentChanged on the ICollectionView
cvs.View.CurrentChanged += (o, e) => MessageBox.Show("current changed");

lb.ItemsSource = cvs.View;  // lb is a ListBox with IsSynchronizedWithCurrentItem="True"

, когда я изменяю выбор в списке, отображается окно сообщения.

Что касается фильтрации, сортировки и группировки, в соответствии с ответом Aron, которые они не доступны на вид на композиционную технику. Но для записи здесь есть способы выявления изменений для представлений, которые делают поддерживают эти функции:

  • Похоже, вы получите событие CollectionChanged, когда фильтр меняется, хотя я не могу найти Это задокументировано.
  • SOTTDENCTIONSS IS SOTITDESCRICECOLLECTIONECT, которая INOTIFYCOLLECTIONCHANGED, поэтому подключите обработчик событий на CollectionChangedChanged на свойстве SortDescriptions.
  • GroupDescriptions IS ОСУЩЕСТВЕННОЕ ЭКСПЛУАТАЦИЯ , поэтому подключите обработчик событий на CollectionChanged на свойстве GroupDescriptions.
6
ответ дан 17 December 2019 в 02:29
поделиться

Вы не можете запустить коллекцию коллекции Copmposite, см. здесь

0
ответ дан 17 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: