申し訳ありませんが、私の質問はこれとほとんど同じですが、実行可能な回答が得られなかったため、他の誰かが新しいアイデアを持っていることを願っています.
単一のタイプの階層にバインドされた WPF TreeView があります。
public class Entity
{
public string Title { get; set; }
public ObservableCollection<Entity> Children { get; set; }
}
Entity クラスは INotifyPropertyChanged を実装していますが、わかりやすくするためにこのコードは省略しています。
TreeView は ObservableCollection<Entity> にバインドされ、各 Entity インスタンスは含まれている Entity インスタンスのセットをその Children プロパティを介して公開します。
<TreeView ItemsSource="{Binding Path=Entities}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Entity}" ItemsSource="{Binding Path=Children}">
<TextBlock Text="{Binding Path=Title}" />
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
最初に、TreeView は期待どおりにバインドされ、複数レベルの階層が正しく表示されます。また、Children コレクションのいずれかのメンバーシップがプログラムによって変更されると、その変更は TreeView に正しく反映されます。
ただし、ルート メンバー レベルの ObservableCollection<Entity> のメンバーシップに対する変更は、TreeView に反映されません。
任意の提案をいただければ幸いです。
ありがとう、ティム