在 ItemsControl on PropertyChange 中对派生的 ObservableCollection<

本文关键字:派生 ObservableCollection ItemsControl on PropertyChange | 更新日期: 2023-09-27 17:57:17

我有一个 ItemsControl 绑定到一个排序的(通过 CollectionViewSource)派生的视图模型的 ObservableCollection。在我的派生集合类中,我正在处理视图模型上的 PropertyChanged。当某个属性(Order)发生更改时,我需要呈现控件以反映新的排序集合。

我知道,在处理 PropertyChanged 时,我可以使用指定的 Reset 操作调用 OnCollectionChanged;但是,这会导致失去对控件的关注,这对我的情况来说是不可取的。

无论如何,我可以处理更改并在光标保留在原处的情况下平滑过渡(或者在选项卡的情况下,移动到下一个适当的字段)。

在 ItemsControl on PropertyChange 中对派生的 ObservableCollection<

什么改变了Order属性?

也许您可以考虑重新排列 ItemsControl,而不是对源进行排序和刷新。

我过去使用TabControl这样做过。当用户将选项卡拖放到新位置时,它会从 TabControl 中删除实际的 TabItem 并将其插入到新位置。SelectedTab 从未更改过,所以我不必担心焦点会改变。