TreeView 是一个垂直可滚动区域,它链接到并显示以树形结构组织的项目列表。
TreeView 是一个 ScrollView,它具有额外的逻辑来显示垂直排列的 VisualElement 树。树中的每个 VisualElement 都绑定到数据源列表中的对应元素。数据源列表可以包含任何类型的元素。
创建 VisualElement 以及将其绑定到或取消绑定到数据源所需的逻辑因预期结果而异。您需要实现适合您的用例的逻辑。为了使 ListView 正确运行,您必须至少提供以下内容
- BaseVerticalCollectionView.fixedItemHeight
对于更复杂的项目,还建议提供以下内容
FixedHeight
ListView 的情况下TreeView 为可见项目创建 VisualElement,并支持绑定更多项目。当用户滚动时,TreeView 会回收 VisualElement 并将其重新绑定到新的数据项。
有关更多信息,请参阅 UXML 元素 TreeView。
bindItem | 将数据项绑定到视觉元素的回调。 |
destroyItem | 当通过 makeItem 创建的 VisualElement 不再需要并且将被销毁时调用的回调。 |
itemTemplate | 一个 UXML 模板,用于构建树中每个回收和重新绑定的元素。此模板旨在替换 makeItem 定义。 |
makeItem | 用于构建 VisualElement 的回调,该 VisualElement 是列表中每个回收和重新绑定的元素的模板。 |
unbindItem | 用于将数据项从 VisualElement 解绑的回调。 |
viewController | 此视图的视图控制器,被强制转换为 TreeViewController。 |
TreeView | 创建一个具有所有默认属性的 TreeView。 |
itemContentContainerUssClassName | TreeView 项目容器元素的 USS 类名称。 |
itemIndentUssClassName | TreeView 缩进元素的 USS 类名称。 |
itemToggleUssClassName | TreeView 项目切换元素的 USS 类名称。 |
itemUssClassName | TreeView 项目元素的 USS 类名称。 |
ussClassName | TreeView 元素的 USS 类名称。 |
borderUssClassName | 带有边框的 BaseVerticalCollectionView 元素的 USS 类名称。 |
dragHoverBarUssClassName | 拖动悬停栏的 USS 类名称。 |
dragHoverMarkerUssClassName | 用于指示深度的拖动悬停圆形标记的 USS 类名称。 |
itemAlternativeBackgroundUssClassName | BaseVerticalCollectionView 中奇数行的 USS 类名称。 |
itemDragHoverUssClassName | 拖动悬停时应用于项目元素的 USS 类名称。 |
itemSelectedVariantUssClassName | BaseVerticalCollectionView 中选中项目元素的 USS 类名称。 |
listScrollViewUssClassName | BaseVerticalCollectionView 中滚动视图的 USS 类名称。 |
disabledUssClassName | 本地禁用元素的 USS 类名称。 |
autoExpand | 设置为 true 时,项目在添加到 TreeView 时会自动展开。 |
itemsSource | 对 itemsSource 的访问。对于 TreeView,源包含项目包装器。 |
viewController | 此视图的视图控制器,被强制转换为 BaseTreeViewController。 |
contentContainer | 返回 BaseVerticalCollectionView 的内容容器。因为 BaseVerticalCollectionView 控件会自动管理其内容,所以它始终返回 null。 |
fixedItemHeight | 列表中单个项目的像素高度。 |
horizontalScrollingEnabled | 此属性控制集合视图在内容不适合可见区域时是否显示水平滚动条。 |
reorderable | 获取或设置一个值,该值指示用户是否可以拖动列表项以重新排序它们。 |
selectedIds | 返回数据源中选定项目的持久 ID,无论它们是否已折叠。始终返回一个可枚举对象,即使没有选择任何项目或只选择了一个项目。 |
selectedIndex | 返回或设置数据源中选中项目的索引。如果选择了多个项目,则返回第一个选中项目的索引。如果提供了多个项目,则将它们全部设置为选中状态。 |
selectedIndices | 返回数据源中选中项目的索引。始终返回一个可枚举对象,即使没有选择任何项目或只选择了一个项目。 |
selectedItem | 返回数据源中选中的项目。如果选择了多个项目,则返回第一个选中项目。 |
selectedItems | 返回数据源中选中的项目。始终返回一个可枚举对象,即使没有选择任何项目或只选择了一个项目。 |
selectionType | 控制选择类型。 |
showAlternatingRowBackgrounds | 此属性控制集合视图行的背景颜色是否交替。从 AlternatingRowBackground 枚举中获取一个值。 |
showBorder | 启用此属性以在集合视图周围显示边框。 |
virtualizationMethod | 当滚动条可见时,用于此集合的虚拟化方法。从 CollectionVirtualizationMethod 枚举中获取一个值。 |
binding | 将要更新的绑定对象。 |
bindingPath | 要绑定的目标属性的路径。 |
canGrabFocus | 如果元素可以获得焦点,则返回 true。 |
delegatesFocus | 元素是否应将其焦点委托给其子级。 |
focusable | 如果元素可以获得焦点,则为 true。 |
focusController | 返回此元素的焦点控制器。 |
tabIndex | 一个整数,用于在焦点环中对可获得焦点的元素进行排序。必须大于或等于零。 |
childCount | 此对象 contentContainer 中子元素的数量。 |
contentRect | 元素内容区域的矩形,以元素的本地空间表示。(只读) |
customStyle | VisualElement 的自定义样式属性访问器。(只读) |
dataSource | 将数据源分配给此 VisualElement,它会覆盖任何继承的数据源。此数据源会被所有子级继承。 |
dataSourcePath | 从数据源到值的路径。 |
dataSourceType | 可以分配给此 VisualElement 的数据源的可能类型。此信息仅由 UI 生成器使用,作为提示在设计时无法指定有效数据源时为数据源路径字段提供一些完成。 |
disablePlayModeTint | 默认情况下会应用播放模式色调,除非将其设置为 true。它会分层应用于此 VisualElement 及其在编辑器面板上存在的所有子级。 |
enabledInHierarchy | 如果 VisualElement 在其自己的层次结构中已启用,则返回 true。 |
enabledSelf | 如果 VisualElement 在本地已启用,则返回 true。 |
experimental | 返回 UIElements 实验性接口。 |
generateVisualContent | 用于生成视觉元素的视觉内容的委托函数。 |
hierarchy | 访问此元素的物理层次结构 |
languageDirection | 指示元素文本的方向性。该值会传播到元素的子级。 |
layout | 相对于其父级,VisualElement 的位置和大小,由布局系统计算。(只读) |
localBound | 返回一个 Rect,表示在应用变换后但在应用布局平移之前应用 Axis-aligned Bounding Box (AABB)。 |
name | 此 VisualElement 的名称。 |
paddingRect | 元素的填充区域的矩形,以元素的本地空间表示。 |
panel | 此 VisualElement 附加到的面板。 |
parent | 此 VisualElement 的父级。 |
pickingMode | 确定此元素是否可以在 mouseEvents 或 IPanel.Pick 查询期间进行选择。 |
resolvedStyle | 视觉元素的最终渲染样式值,如当前帧中渲染的。(只读) |
scaledPixelsPerPoint | 返回来自面板的缩放结果,该缩放结果考虑了屏幕 DPI 和可自定义的缩放因子,但不考虑元素及其祖级的变换缩放。请参见 Panel.scaledPixelsPerPoint。这只能在属于面板的元素上调用。 |
schedule | 检索此 VisualElement 的 IVisualElementScheduler |
style | 在 VisualElement 上设置样式值。 |
styleSheets | 返回一个 VisualElementStyleSheetSet,它用于操作附加到此元素的样式表。 |
this[int] | 检索特定索引处的子元素。 |
tooltip | 在用户将鼠标悬停在元素上一段时间后,要在信息框内显示的文本。这仅在编辑器 UI 中受支持。 |
transform | 返回此 VisualElement 的变换对象。ITransform |
usageHints | 一组提示值,指定 VisualElement 的高级预期用法模式。此属性只能在 VisualElement 尚未成为面板的一部分时设置。一旦成为面板的一部分,此属性将实际上变为只读,尝试更改它将引发异常。正确 UsageHints 的指定会驱动系统根据预期的用法模式来更好地决定如何处理或加速某些操作。请注意,这些提示不会影响行为或视觉结果,只会影响面板及其内部元素的整体性能。建议始终考虑指定正确的 UsageHints,但请记住,某些 UsageHints 可能在某些情况下在内部被忽略(例如,由于目标平台上的硬件限制)。 |
userData | 此属性可用于将应用程序特定的用户数据与此 VisualElement 关联。 |
viewDataKey | 用于视图数据持久性,例如树展开状态、滚动位置或缩放级别。 |
visible | 指示此元素是否应进行渲染。 |
visualTreeAssetSource | 存储资产引用(如果生成的元素是从 VisualTreeAsset 克隆的)。 |
worldBound | 返回一个 Rect,表示在应用世界变换后应用 Axis-aligned Bounding Box (AABB)。 |
worldTransform | 返回一个矩阵,该矩阵累积了以下操作(按顺序):-本地缩放-本地旋转-本地平移-布局平移-父世界变换(递归定义 - 如果没有父级,则考虑单位矩阵) |
AddItem | 将项目添加到现有树中。 |
AddToSelectionById | 通过 ID 将项目添加到当前选择中。 |
CollapseAll | 折叠所有 TreeView 项目,包括子级。 |
CollapseItem | 折叠指定的 TreeView 项目。 |
ExpandAll | 展开所有 TreeView 项目,包括子级。 |
ExpandItem | 展开指定的 TreeView 项目。 |
ExpandRootItems | 展开所有根 TreeView 项目。 |
GetChildrenIdsForIndex | 获取指定 TreeView 项目的子级标识符。 |
GetIdForIndex | 获取指定 TreeView 项目的标识符。 |
GetItemDataForId | 获取指定 TreeView 项目 ID 的数据。 |
GetItemDataForIndex | 获取指定 TreeView 项目索引的数据。 |
GetParentIdForIndex | 获取指定 TreeView 项目的父级标识符。 |
GetRootIds | 获取根项目标识符。 |
GetSelectedItems | 获取所选项目索引的树数据。 |
GetTreeCount | 获取 TreeView 的总项目数。 |
IsExpanded | 如果指定的 TreeView 项目已展开,则返回 true,否则返回 false。 |
RemoveFromSelectionById | 根据 ID 从当前选择中删除项目。 |
SetRootItems | 设置要与默认树视图控制器一起使用的根项目。 |
SetSelectionById | 根据 ID 设置当前选定的项目。 |
SetSelectionByIdWithoutNotify | 根据 ID 设置一组选定的项目,但不触发选择更改回调。 |
SetViewController | 为该视图分配视图控制器,并注册所有使其正常运行所需的事件。 |
TryRemoveItem | 如果可以找到树中的项目,则将其删除。 |
AddToSelection | 将项目添加到选定项目集合中。 |
ClearSelection | 取消选择所有选定的项目。 |
GetRootElementForId | 获取指定集合视图项目的根元素。 |
GetRootElementForIndex | 获取指定集合视图项目的根元素。 |
Rebuild | 清除集合视图,重新创建所有可见的视觉元素,并重新绑定所有项目。 |
RefreshItem | 如果项目当前在集合视图中可见,则重新绑定单个项目。 |
RefreshItems | 重新绑定所有当前可见的项目。 |
RemoveFromSelection | 从选定项目集合中删除项目。 |
ScrollTo | 滚动到特定的 VisualElement。 |
ScrollToItem | 滚动到特定的项目索引,并使其可见。 |
ScrollToItemById | 滚动到特定的项目 ID,并使其可见。 |
SetSelection | 设置当前选定的项目。 |
SetSelectionWithoutNotify | 设置一组选定的项目,但不触发选择更改回调。 |
HasBubbleUpHandlers | 如果已将事件处理程序附加到此对象的事件传播 BubbleUp 阶段,则返回 true。 |
HasTrickleDownHandlers | 如果将事件处理程序附加到此对象的事件传播 TrickleDown 阶段,则返回 true。 |
RegisterCallback | 向实例添加事件处理程序。如果已为同一阶段(TrickleDown 或 BubbleUp)注册了事件处理程序,则此方法无效。 |
RegisterCallbackOnce | 向实例添加事件处理程序。如果已为同一阶段(TrickleDown 或 BubbleUp)注册了事件处理程序,则此方法无效。事件处理程序在恰好调用一次后会自动取消注册。 |
UnregisterCallback | 从实例中删除回调。 |
Blur | 指示元素释放焦点。 |
Focus | 尝试将焦点赋予此元素。 |
Add | 将元素添加到此元素的 contentContainer 中。 |
AddToClassList | 向元素的类列表中添加一个类,以便从 USS 分配样式。请注意,类名区分大小写。 |
BringToFront | 将此元素移到其父级子级列表的末尾。该元素将在视觉上位于任何重叠的兄弟元素的前面。 |
Children | 返回其 contentContainer 中的元素。 |
ClassListContains | 在此元素的类列表中搜索类。 |
Clear | 从此元素的 contentContainer 中删除所有子元素。 |
ClearBinding | 从元素中删除绑定。 |
ClearBindings | 从元素中删除所有绑定。 |
ClearClassList | 从此元素的类列表中删除所有类。AddToClassList |
Contains | 检查此元素是否为指定子元素的祖先。 |
ContainsPoint | 检查指定点是否与该 VisualElement 的布局相交。 |
ElementAt | 检索特定索引处的子元素。 |
EnableInClassList | 启用或禁用具有给定名称的类。 |
FindAncestorUserData | 向上搜索该 VisualElement 的层次结构,并检索存储的 userData(如果有)。 |
FindCommonAncestor | 在 VisualTree 层次结构中,查找两个 VisualElement 之间的最低公共祖先。 |
GetBinding | 获取为提供的目标属性提供的绑定实例。 |
GetBindingInfos | 获取有关当前元素所有绑定的信息。 |
GetClasses | 检索此元素的类。 |
GetDataSourceContext | 查询绑定对象的 dataSource 和 dataSourcePath。 |
GetFirstAncestorOfType | 向上遍历层次结构(从该元素的父级开始),并返回此类型的第一个 VisualElement。 |
GetFirstOfType | 向上遍历层次结构(从该元素开始),并返回此类型的第一个 VisualElement。 |
GetHierarchicalDataSourceContext | 查询从层次结构继承的 dataSource 和 dataSourcePath。 |
HasBinding | 允许知道目标属性是否具有与之关联的绑定。 |
IndexOf | 检索指定 VisualElement 的子级索引。 |
Insert | 将元素插入此元素的 contentContainer 中。 |
MarkDirtyRepaint | 在下一帧触发 VisualElement 的重新绘制。当发生需要重新绘制的更改时,例如当 UIElements.BaseField_1.value 更改或 Label 中的文本更改时,该方法会在内部调用。如果您正在实现自定义控件,则可以在发生需要重新绘制的更改时(例如在使用 generateVisualContent 呈现网格且网格数据现在已更改时)调用此方法以触发重新绘制。 |
PlaceBehind | 将此元素放在兄弟元素之前,在它们的父级子级列表中。如果该元素和兄弟元素的位置重叠,则该元素在视觉上将位于其兄弟元素的后面。 |
PlaceInFront | 将此元素放在兄弟元素之后,在它们的父级子级列表中。如果该元素和兄弟元素的位置重叠,则该元素在视觉上将位于其兄弟元素的前面。 |
Remove | 从此元素的 contentContainer 层次结构中删除此子元素。 |
RemoveAt | 从此元素的 contentContainer 中删除位于此位置的子元素。 |
RemoveFromClassList | 从元素的类列表中删除类。 |
RemoveFromHierarchy | 从此元素的父级层次结构中删除该元素。 |
SendEvent | 向事件处理程序发送事件。 |
SendToBack | 将此元素发送到其父级子级列表的开头。该元素将在视觉上位于任何重叠的兄弟元素的后面。 |
SetBinding | 在目标和源之间分配绑定。 |
SetEnabled | 更改 VisualElement 的启用状态。禁用的 VisualElement 不会接收大多数事件。 |
Sort | 重新排列来自该 VisualElement contentContainer 的子元素。 |
ToggleInClassList | 在将给定类名添加到类列表和从类列表中删除给定类名之间切换。 |
TryGetBinding | 获取为提供的目标属性提供的绑定实例。 |
TryGetDataSourceContext | 查询绑定对象的 dataSource 和 dataSourcePath。 |
TryGetLastBindingToSourceResult | 返回从 UI 到数据源的绑定对象的最后一个 BindingResult。 |
TryGetLastBindingToUIResult | 返回从数据源到 UI 的绑定对象的最后一个 BindingResult。 |
CreateViewController | 为该视图创建视图控制器。在继承者中覆盖此方法以更改控制器类型。 |
HandleEventBubbleUp | 在 BubbleUp 阶段的此元素上执行逻辑,紧接在该元素的 BubbleUp 回调之前。调用 StopPropagation 将阻止沿传播路径进一步调用此方法。 |
HandleEventTrickleDown | 在 TrickleDown 阶段的此元素上执行逻辑,紧接在该元素的 TrickleDown 回调之后。调用 StopPropagation 将阻止沿传播路径进一步调用此方法。 |
NotifyPropertyChanged | 通知数据绑定系统控件的某个属性已更改。 |
itemExpandedChanged | 当项目展开或折叠时引发。 |
canStartDrag | 当拖放操作想要在此集合视图中开始时调用。 |
dragAndDropUpdate | 当拖放操作在此集合视图中更新时调用。 |
handleDrop | 当拖放操作在此集合视图中释放时调用。 |
itemIndexChanged | 当项目在 itemsSource 中移动时调用。 |
itemsChosen | 当用户对一个或多个项目的选定内容采取操作时触发的回调,例如双击或按 Enter 键。 |
itemsSourceChanged | 当垂直集合视图的数据源被分配新的引用或新的类型时引发。 |
onItemsChosen | 已弃用。请使用 BaseVerticalCollectionView.itemsChosen 代替。 |
onSelectedIndicesChange | 已弃用。请使用 BaseVerticalCollectionView.selectedIndicesChanged 代替。 |
onSelectionChange | 已弃用。请使用 BaseVerticalCollectionView.selectionChanged 代替。 |
selectedIndicesChanged | 当选择更改时触发的回调。 |
selectionChanged | 当选择更改时触发的回调。 |
setupDragAndDrop | 当拖放操作在此集合视图中开始时调用。 |