WPF:在(虚拟化)TreeView 中选择一个项目

WPF: Selecting an item in (virtualized) TreeView

我有一个虚拟化的 TreeView 并且我成功地使用 here 描述的机制来 select 视图中的给定域对象(相应地扩展到对象的路径),但是树总是完全实现,这对我的情况(几千项)来说太慢了。

是否有更好的方法从域层次结构中的对象到树 项目而不是这种蛮力方法?我知道域层次结构中项目的路径,所以我只想实现那些位于要 selected 的项目路径上的项目,但我还没有找到如何这样做的方法。

我过去使用的一种方法是还包括一个 IsExpanded 属性 绑定到 ViewModel 对象(代表您的视觉 TreeItem)。

然后您可以沿着路径从叶节点返回到树的根,并将 IsExpanded 设置为 true,这意味着没有暴力破解讨厌的非 MVVM 兼容代码XAML 背后的代码。