WPF Treeview - 如何自动扩展父节点并选择新节点

时间:2014-05-08 10:36:04

标签: c# wpf treeview datatemplate hierarchicaldatatemplate

我的模型对象设置如下:

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

这给了我一张任意大小和深度的模型对象树。我使用分层数据模板在WPF TreeView中显示这些。由于ObservableCollection,我可以在模型树中的任何位置添加模型对象,UI也会相应更新。

令人烦恼的是因为即使可能在第三级添加新的模型对象,例如,它也可能不会立即可见。

当在树中的任何位置添加新模型对象时,我希望TreeView自动选择新节点,并将其父节点扩展为用户立即可见。这似乎并不是显而易见的。

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

这似乎必须由某人解决。有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

并在您的树视图ItemContainerStyle中添加以下setter

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

Noe每次在viewmodels中设置这两个属性时,都会选择/展开相应的treeviewitem