【问题标题】:TreeView HierarchicalDataTemplate bindingTreeView HierarchicalDataTemplate 绑定
【发布时间】:2012-09-07 18:10:09
【问题描述】:

我有一个包含 ObservableCollection 的类 SceneNode。我希望整个树都显示出来,但是我似乎无法让它与数据绑定一起使用。如果我只是将根添加到树项中,一切都会完美运行。

class SceneNode
{
    public string Name {get;set;}
    public ObserveableCollection<SceneNode> ChildrenNodes{get;set;}
    ....
}
class Scene
{
    public SceneNode Nodes{get;set;}
}

所以我将场景绑定到树数据上下文,以下是我的树 xaml

<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 中。

【问题讨论】:

  • 为了解决这个问题,我在 Scene 对象中创建了一个新属性,它只返回一个新的 ObservableCollection。

标签: wpf data-binding treeview datacontext hierarchicaldatatemplate


【解决方案1】:

这里的问题是 ItemsSource 属性接收一个 Collection,而您正在绑定到一个 SceneNode,这不是一个集合。绑定到 ChildrenNodes 属性将解决此问题:

    <TreeView x:Name="treeView" MinHeight="250" ItemsSource="{Binding Nodes.ChildrenNodes}" >
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate DataType="{x:Type WpfBackgroundWorkerQuestion:SceneNode}" ItemsSource="{Binding Path=ChildrenNodes, UpdateSourceTrigger=PropertyChanged}">
                <TextBlock Text="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged}" Margin="0,10,0,10" />
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>

【讨论】:

  • 我在这里测试过,可能是类需要公开,另外,绑定需要引号 Ex ItemsSources="{Binding...
  • 在我的代码中我也犯了一个错误,我写了 DataType="{x:Type WpfBackgroundWorkerQuestion:SceneNode}", instide of DataType="{x:Type local:SceneNode}"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 2012-05-04
  • 2011-07-13
  • 1970-01-01
相关资源
最近更新 更多