Shi*_*mmy 6 wpf observablecollection compositecollection collectionviewsource
当CompositeCollection的当前位置发生变化时,有没有办法得到通知?
我需要通过CollectionView监控CompositeCollection,任何想法都很受欢迎.
您可以通过监视ICollectionView.CurrentChanged
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"
Run Code Online (Sandbox Code Playgroud)
当我更改ListBox中的选择时,将显示消息框.
关于过滤,排序和分组,根据Aron的回答,这些在CompositeCollection的视图中不可用.但对于记录你在这里可以检测的观点,即改变方式做支持以下功能:
ObservableCollection<GroupDescription>
,因此在GroupDescriptions属性上连接CollectionChanged事件处理程序.