【发布时间】:2014-09-26 19:06:25
【问题描述】:
我有一个TreeView,它使用带有自定义IComprarer 的ListCollectionView 和实时整形来订购它的孩子。当当前选定的TreeViewItem 在视图中重新排序时,我希望TreeView 自动滚动到TreeViewItem 的新位置。但是,当ListCollectionView 应用新排序时,我找不到通知的方法,并且我想要的行为似乎没有内置到TreeViewControl 中。
当ListCollectionView 重新计算其排序顺序时,有什么方法可以通知我?
【问题讨论】:
-
但是 ListCollectionView 不应该应用新的排序而没有一些事情发生
-
你说得对,我可以绑定到每个项目的
PropertyChanged事件并监听变化,并在TreeView的ItemsSource上监听CollectionChanged事件以附加/将处理程序分离到每个项目,但这是很多工作。ListCollectionView已经在为我做的工作。如果我需要付出那么多努力,我不妨完全跳过实时塑造,并在 ViewModel 中手动对我的列表进行排序。 -
@NathanFriend 不是
CollectionChanged应该做你想做的事吗?您是否尝试过处理该事件? -
我的
ItemsSource上没有调用CollectionChanged回调,因为排序只发生在视图中。 -
@NathanFriend 你试过做这样的事情吗
((ICollectionView)yourListCollectionView).CollectionChanged += handler;?
标签: c# wpf treeview collectionviewsource listcollectionview