c# - 仅在单击时才加载每个子 -"folder"的层次结构 C# 组件?

标签 c# .net treeview .net-4.5 treeviewitem

我正在修改a Windows app使用 System.Windows.Control UI 元素,
我想让用户从层次结构中选择一个项目,所以看起来像这样:

tree

只不过它不是文件夹,而是一个巨大的远程对象层次结构,非常深且检索速度慢。
在显示之前加载整个层次结构会太慢,我必须显示第一级,然后当用户单击它时在文件夹内显示。

我正在考虑使用 System.Windows.Control.TreeView 并拦截 TreeViewItem 元素上的选择事件,以便在需要时填充它们。
问题:这是最佳实践策略,还是有更适合此目的的 System.Windows.Control UI 元素?

读取单击元素的每个文件夹的内容的组件也是可以接受的。
该应用使用 .NET 4.5

最佳答案

如果我理解正确,您希望仅在父节点展开时(例如通过单击其展开图标)加载子节点。从用户体验的角度来看,在节点扩展时加载子项确实比在选择节点时加载它们听起来更好。

我不知道有什么可以开箱即用,但您可以轻松地自己构建一个。我看到的方法是在每个尚未获取子节点的节点下添加一个虚拟节点,并在用于扩展节点的事件处理程序中检查它是否有虚拟节点,然后如果是这样,则加载其实际子节点并用它们替换虚拟子节点。

虚拟节点导致其父节点看起来是可展开的(例如,有一个“+”图标或折叠的三角形),这可能正是您所需要的。如果您输入“(正在加载...)”或诸如虚拟标题之类的内容,您将获得良好的用户体验。

关于c# - 仅在单击时才加载每个子 -"folder"的层次结构 C# 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12675364/

相关文章:

c# - 一起使用任务和线程池可以吗?

wpf - 如何防止 TreeView 所选项目的子项继承其格式?

c# - 如何在 asp.net c# treeview 控件中绑定(bind)数据

c# - Jssor Sliders 过渡不起作用

c# - 带有模式的 Switch 语句

c# - resharper 内联对象初始化

c# - 不同地区不同认证方式

c# - AvalonEdit - 规则集跨度

c# - 使用 .NET 将数组序列化为 JSON 对象

c# - 如何在 Winforms 中获取 TreeNode 的层次结构索引