是否可以在 DataContext 更改时保存 TreeView 的状态(扩展节点,SelectedItem)。
DataContext 的结构在更改时不会更改。
<TreeView ItemsSource="{Binding Fields}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type vm:NodeVM}" ItemsSource="{Binding Childs}" >
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" MinWidth="80"/>
<TextBlock Text="{Binding Value}"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
虚拟机:
public class NodeVM : BaseVM
{
public string Name { get; set; }
public string Value
{
get { return _value; }
set { _value = value; RaisePropertyChanged(); }
}
public List<NodeVM> Childs { get; set; }
public NodeVM()
{
Childs = new List<NodeVM>();
}
string _value;
}
public List<NodeVM> Fields { get; set; }
根据评论中的建议,我替换了更改的节点,但子节点的状态并没有以这种方式保存。




