我有一个ItemsControl绑定到一个已排序的(通过CollectionViewSource)派生的ObservableCollection视图模型。在我的派生集合类中,我正在我的视图模型上处理PropertyChanged。当某个属性(Order)发生变化时,我需要渲染控件以反映新的已排序集合。
我理解,在我处理PropertyChanged时,我可以使用指定的Reset操作调用OnCollectionChanged;然而,这会导致失去对控制的关注,这对我的情况来说是不可取的。
无论如何,我可以处理更改并平滑过渡,光标保持原位(或者在标签的情况下,移动到下一个适当的字段)。
答案 0 :(得分:1)
Order
属性的变化是什么?
也许您可以考虑重新安排ItemsControl而不是排序和刷新源代码。
我过去用TabControl做过这个。当用户将选项卡拖放到新位置时,它会从TabControl中删除实际的TabItem并将其插入新位置。 SelectedTab从未改变过,所以我不必担心焦点变化。