現在、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>