我的模型对象设置如下:
public class Model
{
public ObservableCollection<Model> Children{get;set;}
public string Name{get;set;}
}
这给了我一张任意大小和深度的模型对象树。我使用分层数据模板在WPF TreeView中显示这些。由于ObservableCollection,我可以在模型树中的任何位置添加模型对象,UI也会相应更新。
令人烦恼的是因为即使可能在第三级添加新的模型对象,例如,它也可能不会立即可见。
当在树中的任何位置添加新模型对象时,我希望TreeView自动选择新节点,并将其父节点扩展为用户立即可见。这似乎并不是显而易见的。
我不想做的是使用仅在特定WPF控件中有意义的属性污染Model对象。我也不想在模型中添加父属性。
这似乎必须由某人解决。有没有人知道如何解决这个问题?
答案 0 :(得分:1)
在模型中创建2个属性,如下所示 IsExpanded和IsSelected
并在您的树视图ItemContainerStyle中添加以下setter
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
<Setter Property="IsExpanded" Value="{Binding IsExpanded}"/>
Noe每次在viewmodels中设置这两个属性时,都会选择/展开相应的treeviewitem