从 wpf 中的文件路径列表填充树视图
有几个示例说明如何从文件路径集合填充树视图,例如 this 或 < href="https://stackoverflow.com/questions/2436201/how-to-make-a-treeview-from-a-database-column-filepath">另一个示例。我似乎找不到这样的 WPF 示例。我知道我可以集成 Windows 窗体并使用不同的控件来使其工作,但如果我可以使用 wpf 树视图控件做同样的事情,那就太好了。我想要构建的树视图由大约 50,000 个文件组成,因此我认为将其绑定到某些东西会更好。但首先在绑定它之前,我认为基于字符串列表(字符串包含文件的路径)构建一个列表会很有帮助。
There are several examples of how to populate a tree view from a collection of file paths such as this or this other example. I cannot seem to find such example for WPF. I know I can integrate windows forms and use a different control in order to make it work but it will be nice if I could do the same thing with a wpf treeview control. The tree view that I want to construct consists of about 50,000 files therefore I think it will be better if it is bind it to something. But first before binding it, I think it will be helpful to construct one based on a List of strings (strings contains the paths of files).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我对这个问题很感兴趣,并将其放在一起。作为第一次,我认为我非常接近你正在寻找的东西。不过,谈论 50,000 个项目让我认为延迟加载可能是合适的。无论如何,这是基于 的简单版本乔什·史密斯的文章。我将所有代码都放在这里,但神奇之处确实发生在数据模板上。
给定一些类来表示我们正在使用的对象...
并且...
并且...
我创建了一个递归方法来加载一些目录/文件...
从那里只需获取数据即可。 ..
并显示它...
所有的魔力确实都发生在数据模板上。我想整个事情的关键是对任何具有层次结构的项目(即目录)使用 HierarchicalDataTemplate。
注 1:我还没有对此进行广泛的测试。尚未对其性能进行分析。我欢迎任何反馈,因为这是我很久以前试图解决但放弃的问题。谢谢!
注意 2:您需要将硬编码路径设置为对您的系统有意义的路径。
这是显示不同级别的目录和文件的屏幕截图...
I was intrigued by the question and threw this together. As a first pass I think I'm pretty close to what you're looking for. Talking about 50,000 items though makes me think that lazy loading may be appropriate. Anyway, here is the simple version based on an article by Josh Smith. I put all of the code here, but the magic really takes place with the data templates.
Given a few classes to represent the objects we're working with...
and...
and...
I created a recursive method to load up some directories/files...
From there it's just a matter of getting the data...
And displaying it...
All of the magic really happens with the data templates. I guess the key to the whole thing is using the HierarchicalDataTemplate for any items with hierarchy (i.e. directories).
NOTE 1: I haven't extensively tested this. It hasn't been profiled for performance. I would welcome any feedback though since this is a problem I tried to solve long ago and gave up on. Thanks!
NOTE 2: You'll need to set the hard-coded path to something that makes sense on your system.
Here is a screenshot showing directories and files at different levels...
对先前解决方案的小扩展:
我添加了 xaml 代码来支持图标,并支持在打开和关闭的文件夹的图标之间切换:
Small extension for previous solution:
I added xaml code to support the icons, and support for switching between icons for opened and closed folder: