在 WPF 中创建所有子文件夹树视图

折扣

我正在尝试创建一个包含所有子文件夹的 treeView,我按照教程(https://xinyustudio.wordpress.com/?s=WPF%20tree)和一个 SO 答案来做到这一点(Binding TreeView with a ObservableCollection),但我有一些问题。

这是我的代码:

<TreeView Name="TreeName" ItemsSource="{Binding ListEtudes}">
   <TreeView.Resources>
       <HierarchicalDataTemplate DataType="{x:Type viewModels:FolderItem}" ItemsSource="{Binding Children}">
             <TextBlock Text="{Binding Caption}"/>
       </HierarchicalDataTemplate>
       <DataTemplate DataType="{x:Type IO::FileInfo}">
              <TextBlock Text="{Binding Name}"/>
       </DataTemplate>
   </TreeView.Resources>

和下面的代码:

public class FolderItem
{
    public DirectoryInfo Info { get; set; }

    public FolderItem (DirectoryInfo dir)
    {
        Info = dir;
    }

    public FolderItem(string path)
    {
        Info = new DirectoryInfo(path);
    }

    public string Caption
    {
        get { return Info.Name; }
    }
    public IList Children
    {
        get
        {
            var subDirItems = new List<FolderItem>();

            foreach (var dir in Info.GetDirectories())
                subDirItems.Add(new FolderItem(dir));

            return new CompositeCollection()
            {
                new CollectionContainer { Collection = subDirItems },
                new CollectionContainer { Collection = Info.GetFiles() }
            };
        }
    }
}

创建ListEtudes, 调用视图后调用。

private ObservableCollection<FolderItem> listEtudes;
    public ObservableCollection<FolderItem> ListEtudes
    {
        get
        {
            if (listEtudes.Count == 0)
            {
                var root = new ObservableCollection<FolderItem>
                {
                    new FolderItem("C:\\temp\\")
                };
                listEtudes = root;
            }
            return listEtudes;
        }
    }

如您所见,我按照教程进行操作,但仍有一些问题:

在 xaml 中:DataType="{x:Type FolderItem}"--> WPF 项目中不支持 FolderItem--> TomerAgmon1 的解决方案:需要定义命名空间并将其包含在 XAML 中。已编辑。

DataType="{x:Type IO::FileInfo}" --> 命名空间前缀 IO 未定义

在 C# 中:public IList Children--> 使用泛型类型“Ilist”需要 1 个类型参数

老实说,我不明白我在这里犯了什么错误,所以任何帮助都会有用:)

阿蒙1

关于 xaml 错误: 1. SpecificiyingDataType是可选的。只有这样 Intellisense 才能与绑定一起工作,并且您可以避免输入错误。2. 在DataType="{x:Type FolderItem}"您忘记为FolderItem. 您应该xmlns:myModelNamespace="..."在 xaml 文件的顶部定义,然后使用DataType="{x:Type myModelNamespace:FolderItem}". 3.DataType="{x:Type IO::FileInfo}"你写的::不是:. 那是打字错误吗?另外,我看不出你是否IO像我之前解释的那样正确引用了命名空间。

关于 C# 错误...您忘记指定IList. 您应该将属性的类型更改ChildrenIList<SomeType>

希望能帮助到你

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在文件夹中创建所有Django应用?

如何使用子文件夹中的ico文件设置WPF应用程序图标

在Documents C#WPF中创建一个文件夹

遍历文件夹和子文件夹中的所有文件并获取创建日期

C#文件夹创建不创建所有文件夹,而仅在某些计算机上

WPF从文件夹加载图像

如何使用 c# 和 wpf 将所有文件从特定文件夹获取到数据网格

Eclipse 插件 - 如何在给定路径 (IPath) 中创建所有文件夹 (IFolders)

WPF中的EF6 Code First在应用程序文件夹中创建本地数据库

WPF树视图HierarchicalDataTemplate ItemTemplateSelector

WPF HierarchicalDataTemplate和树视图

WPF 树视图展开操作

WPF树视图:跳过级别

如何在Lotus Notes中查找文件夹的所有子文件夹(视图)

如何在树视图WPF中访问子级的子级节点

.htaccess规则文件与所有子文件夹匹配(子文件夹是随机创建的)

在给定文件夹的所有子文件夹中递归创建一个php文件

从文件夹中的所有文件创建zip文件

在WPF中创建OxyPlot

C# WPF 在构建时创建了太多的文化文件夹

批处理文件以在文件夹中创建新的子文件夹,将文件移动到目录中所有文件夹的新创建的子文件夹

列出R中没有子文件夹的文件夹中的所有文件

重复文件显示在 WPF 文件夹中的列表框中

如何从文件夹WPF获取文件路径?

在 tkinter 的分层树视图中递归排列所有文件夹和文件

渲染文件夹中的所有局部视图

文件夹中的tar + gz文件,不放入所有子文件夹中

与所有父文件夹中创建的Java文件

如何删除文件夹中除最新X子文件夹以外的所有子文件夹?