0

我目前正在使用 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>

“Labels”是我在“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>
4

2 回答 2

1

您可以创建名为“Expandable”的包装类,它包装您的值并公开一个属性 IsExpanded。然后将 TreeViewItems 的 IsExpanded 值以两种方式绑定到 Expandable 的 IsExpanded 属性以存储状态。这应该可以解决您的问题。

于 2012-07-01T21:50:18.560 回答
0

You can achieve that by creating style for the TreeViewItem and set the binding mode to two way.

于 2012-07-01T21:08:35.253 回答