WPF TreeView 分层绑定(bind)。

标签 wpf binding treeview itemssource hierarchicaldatatemplate

刚开始使用wpf。 我需要绑定(bind)对象(分层)文件夹

public class Folder
{
    public Folder()
    {
        this.Name = string.Empty;
        this.Modules = new ObservableCollection<Module>();
        this.Folders = new List<Folder>();
        this.HasChild = false;
    }

    public Folder(Folder parent)
    {
        this.Name = string.Empty;
        this.Modules = new ObservableCollection<Module>();
        this.Folders = new List<Folder>();
        this.HasChild = false;
        this.Parent = parent;
    }

    public bool HasChild { get; set; }

    public string Name { get; set; }

    public List<Folder> Folders { get; set; }

    public ObservableCollection<Module> Modules { get; set; }

    public Folder Parent { get; set; }

    public Folder IfItemExists(string name)
    {
        foreach (Folder folder in Folders)
        {
            if (folder.Name == name)
            {
                return folder;
            }
        }

        return null;
    }
}

到 TreeView 。我就是这么做的

   <TreeView Name="treeView" Margin="5">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Path=Folders}" DataType="{x:Type ModulesUpToDateChecker:Folder}">
                <HierarchicalDataTemplate.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Path=Name}"></TextBlock>
                    </DataTemplate>
                </HierarchicalDataTemplate.ItemTemplate>
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>

并且只有空的文档面板。对象被填充写入。每个 child 都有自己的具有相同类型的 child 。

最佳答案

HierarchicalDataTemplate 已经是 DataTemplate(它派生自它)。因此,只需跳过 HierarchicalDataTemplate 中的 ItemTemplate 和 DataTemplate 内容,如下所示:

<TreeView Name="treeView" Margin="5">
  <TreeView.Resources>
    <HierarchicalDataTemplate ItemsSource="{Binding Path=Folders}" DataType="{x:Type WpfApplication220:Folder}">
      <TextBlock Text="{Binding Path=Name}"></TextBlock>
    </HierarchicalDataTemplate>
  </TreeView.Resources>
</TreeView>

哦,您必须以编程方式或在标记中设置 TreeView 的 ItemsSource ..

treeView.ItemsSource = ..yourFolderList..

关于WPF TreeView 分层绑定(bind)。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12532435/

相关文章:

c# - 即使光标在 Canvas 之外,也会调用 MouseMove 事件。 `Border` Canvas 周围没有工作

mvvm - Windows Phone 8 全景绑定(bind)错误?

javascript - Kendoui TreeView 展开清除选中的节点

wpf - 数据绑定(bind) WPF + IRONPYTHON

c# - 为什么这个等式不对?

java - Xamarin Android 在 Visual Studio 中绑定(bind)并使用 Java 库

c# - 将当前项目作为数据模板中的命令参数发送

javascript - 在visjs中右键单击节点(上下文菜单)打开扩展弹出窗口(html列表)

c++ - 在QTreeView中显示图像

c# - 通过 ViewModel 设置 ImageSource 不起作用