我目前正在使用WPF和数据绑定来显示/更新数据。我有一个TreeView和一个ItemTemplate。
<TreeView ItemsSource="{StaticResource Labels}">
<TreeView.ItemTemplate>
<DataTemplate>
<Grid>
<TreeViewItem Header="{Binding Key}">
<TextBlock Text="{Binding Value}" />
</TreeViewItem>
</Grid>
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>
“标签”是我在“InitializeComponent”之前指定的字典。问题是每次我更改数据并在TreeView上调用“刷新”时,所有树视图项都会回到折叠状态,即使它们已被展开。
如何将展开的项目保持在展开状态?
编辑:对于其他尝试这样做的人,我只是想把XAML用于我(因为我在网上看的时候很难找到它)。我创建了一个帮助类,它将IsExpanded保留为数据源的一部分。<TreeView ItemsSource="{StaticResource Labels}">
<TreeView.ItemTemplate>
<DataTemplate>
<Grid>
<TreeViewItem Header="{Binding Key}"
IsExpanded="{Binding Path=Value.IsExpanded, Mode=TwoWay}">
<TextBlock Text="{Binding Value.RealValue}" />
</TreeViewItem>
</Grid>
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>
答案 0 :(得分:1)
您可以创建名为“Expandable”的包装类,它包装您的值并公开属性IsExpanded。然后以双向绑定模式将TreeViewItems IsExpanded值绑定到Expandable的IsExpanded属性以存储State。 这应该可以解决您的问题。
答案 1 :(得分:0)
您可以通过为TreeViewItem创建样式并将绑定模式设置为双向来实现。