В настоящее время я использую WPF и привязки данных для отображения/обновления данных. У меня есть TreeView и ItemTemplate.Стойкий IsExpanded на ItemTemplate
<TreeView ItemsSource="{StaticResource Labels}">
<TreeView.ItemTemplate>
<DataTemplate>
<Grid>
<TreeViewItem Header="{Binding Key}">
<TextBlock Text="{Binding Value}" />
</TreeViewItem>
</Grid>
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>
«Ярлыки» - это словарь, который я назначил перед «InitializeComponent». Проблема в том, что каждый раз, когда я меняю данные и вызываю «Refresh» в TreeView, все элементы древовидной структуры возвращаются к сложенному состоянию, даже если они были расширены.
Как сохранить расширенные элементы в их расширенном состоянии?
EDIT: Для других, пытающихся это сделать, я просто собираюсь поставить 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>