我现在正在玩 ICollectionView,遇到了一个问题,我认为我理解“为什么”,但不理解“我该如何解决它”。:)
我有一个数据绑定到 ICollectionView 的 ComboBox,它最初是使用以下代码设置的:
NameView = CollectionViewSource.GetDefaultView( names); // names is an IEnumerable<string> that comes from a LINQ query
NameView.CurrentChanged += new EventHandler(NameView_CurrentChanged);
一切正常,直到我执行一段代码,该代码生成一个新的IEnumerable<string>
并使用与上面相同的代码再次设置 NameView。一旦我这样做,CurrentItem
将不再正常工作。
ObservableCollection<string>
在将数据绑定到 ComboBoxes之前,我遇到过这个问题,我通过使用Clear()
而Add()
不是将ObservableCollection<string>
属性设置为新的ObservableCollection<string>
.
我的问题包括: 1. 如果我希望能够将属性设置为新集合,我可以以某种方式重新建立与新集合的数据绑定吗?如果是这样,怎么做?如果不是,你能解释一下为什么这根本不可能的背后的 WPFisms 吗?2. 处理ObservableCollection<string>
or变化的最佳方法是ICollectionView
什么?我只是清除和添加的方法是唯一的方法吗?