ObservableCollectionを含むSceneNodeクラスがあります。ツリー全体を表示したいのですが、これをデータバインディングで機能させることができないようです。ツリーアイテムにルートを追加するだけで、すべてが完全に機能します。
class SceneNode
{
public string Name {get;set;}
public ObserveableCollection<SceneNode> ChildrenNodes{get;set;}
....
}
class Scene
{
public SceneNode Nodes{get;set;}
}
シーンをTreesデータコンテキストにバインドします。以下は私のtreesxamlです。
<TreeView MinHeight="250" ItemsSource={Binding Path=Nodes} >
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:SceneNode}" ItemsSource="{Binding Path=ChildSceneNodes, UpdateSourceTrigger=PropertyChanged}">
<TextBlock Text="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged}" Margin="0,10,0,10" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
ツリーのコントロールが表示される前の舞台裏で、データコンテキストをバインドします
sceneTree.Tree.DataContext = theScene;
何も表示されませんが、データをバインドする代わりに私が行う場合
sceneTree.Tree.Items.Add( theScene.Nodes );
ツリーが表示され、ノードを追加および削除できます。このアクティビティはTreeViewに反映されます。