我正在修改a Windows app使用 System.Windows.Control
UI 元素,
我想让用户从层次结构中选择一个项目,所以看起来像这样:
只不过它不是文件夹,而是一个巨大的远程对象层次结构,非常深且检索速度慢。
在显示之前加载整个层次结构会太慢,我必须显示第一级,然后当用户单击它时在文件夹内显示。
我正在考虑使用 System.Windows.Control.TreeView
并拦截 TreeViewItem
元素上的选择事件,以便在需要时填充它们。
问题:这是最佳实践策略,还是有更适合此目的的 System.Windows.Control
UI 元素?
读取单击元素的每个文件夹的内容的组件也是可以接受的。
该应用使用 .NET 4.5
。
最佳答案
如果我理解正确,您希望仅在父节点展开时(例如通过单击其展开图标)加载子节点。从用户体验的角度来看,在节点扩展时加载子项确实比在选择节点时加载它们听起来更好。
我不知道有什么可以开箱即用,但您可以轻松地自己构建一个。我看到的方法是在每个尚未获取子节点的节点下添加一个虚拟节点,并在用于扩展节点的事件处理程序中检查它是否有虚拟节点,然后如果是这样,则加载其实际子节点并用它们替换虚拟子节点。
虚拟节点导致其父节点看起来是可展开的(例如,有一个“+”图标或折叠的三角形),这可能正是您所需要的。如果您输入“(正在加载...)”或诸如虚拟标题之类的内容,您将获得良好的用户体验。
关于c# - 仅在单击时才加载每个子 -"folder"的层次结构 C# 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12675364/