跳到正文
浏览文档

Tree

可为任意数量条目虚拟化的树,即 uikit:Tree。

示例可交互
Tree — Avalonia UIKit
Live demo unavailable
<uikit:Tree Width="240" Height="240" HorizontalAlignment="Left">
  <uikit:TreeItem Label="src" IsExpanded="True">
    <uikit:TreeItem Label="components" IsExpanded="True">
      <uikit:TreeItem Label="button.rs" />
      <uikit:TreeItem Label="tree.rs" />
    </uikit:TreeItem>
    <uikit:TreeItem Label="lib.rs" />
  </uikit:TreeItem>
  <uikit:TreeItem Label="assets" IsDisabled="True">
    <uikit:TreeItem Label="logo.svg" />
  </uikit:TreeItem>
  <uikit:TreeItem Label="Cargo.toml" />
</uikit:Tree>

用法

uikit:Tree 把树中可见的部分排成一个行列表并对其虚拟化,因此任意规模的树都能保持流畅。其行具有 Tree 的外观。把 uikit:TreeItem(Label、子条目、IsExpanded、IsDisabled)作为子元素或放在 ItemsSource 中。对于你自己的对象,ChildrenSelector(或 ItemTemplate 中的 TreeDataTemplate)提供条目的子项,DisabledSelector 禁用条目,Expand、Collapse 与 IsItemExpanded 用于设置和读取展开状态。ItemTemplate 绘制图标之后的内容。

  • 按下即选中一行,并打开或关闭文件夹。上、下方向键移动选择并在两端循环;右方向键打开、左方向键关闭所选文件夹,回车键切换其状态。SelectionChanged、Expanded 与 Collapsed 报告这些变化。
  • 右键按下会用选中色的边框标记该行,但不选中它(RightClickedItem)。
  • RevealItem(item, strategy) 打开该条目的各级文件夹并将其滚动到可见范围;把 SelectedItem 设为隐藏的条目同样会打开其文件夹。ScrollToItem(index, strategy) 滚动到 Entries 中的某一行。

示例

五十个包,每个包两百个文件:只有视图内的行会被实例化。

虚拟化可交互
Live demo unavailable
<uikit:Tree Width="280" Height="300" HorizontalAlignment="Left"
            ItemsSource="{x:Static local:TreeSamples.Workspace}" />