WPF树视图-如何自动展开父节点和选择新节点

本文关键字:新节点 选择 节点 父节点 视图 何自动 WPF | 更新日期: 2023-09-27 18:02:14

我有模型对象设置如下:

public class Model
{
    public ObservableCollection<Model> Children{get;set;}
    public string Name{get;set;}
}

这给了我一个任意大小和深度的模型对象树。我使用分层数据模板在WPF树视图中显示这些。因为有了ObservableCollection,我可以在模型树的任何地方添加模型对象,UI也会相应地更新。

令人烦恼的是,即使在第三层添加了一个新的模型对象,例如,它可能不会立即可见。

当一个新的模型对象被添加到树的任何地方时,我希望TreeView自动选择新的节点,并展开它的父节点,以便它对用户立即可见。这似乎不是很明显。

我不想做的是用仅在特定WPF控件中有意义的属性污染模型对象。我也不想给Models添加父属性。

看来这个问题以前一定有人解决过。有人知道如何解决这个问题吗?

WPF树视图-如何自动展开父节点和选择新节点

在模型中创建2个属性,如下所示IsExpanded and IsSelected

和在你的treeview ItemContainerStyle中添加以下setter

<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
<Setter Property="IsExpanded" Value="{Binding IsExpanded}"/>

每次在视图模型中设置这两个属性时,相应的treeviewitem将被选中/展开