WPFのTreeViewですが、ツリーのノードを開いた状態を扱うプロパティはIsExpandedです。
このプロパティ、どうしてBindingしているのに、コントロールの状態が ViewModelに反映されないんだろうとハマっていました。
ViewModel側からプロパティを変更すると、コントロールの状態には反映されるんですが。
調べると、Binding Modeの指定が必要でした。
<TreeView.ItemContainerStyle> <Style TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource {x:Type TreeViewItem}}"> <Setter Property="IsExpanded" Value="{Binding IsExpanded.Value, Mode=TwoWay}" /> </Style> </TreeView.ItemContainerStyle>
UpdateSourceTriggerといい、このあたりのデフォルトの値はまだまだ慣れないとダメですね。