Version: 2020.3

描述

一个可垂直滚动区域,仅为可见项创建视觉元素,同时允许绑定更多项。当用户滚动时,视觉元素被回收并重新绑定到新数据项。

using System;
using System.Collections.Generic;

using UnityEditor; using UnityEngine; using UnityEngine.UIElements;

namespace UIElementsExamples { public class ListViewExampleWindow : EditorWindow { [MenuItem("Window/ListViewExampleWindow")] public static void OpenDemoManual() { GetWindow<ListViewExampleWindow>().Show(); }

public void OnEnable() { // Create some list of data, here simply numbers in interval [1, 1000] const int itemCount = 1000; var items = new List<string>(itemCount); for (int i = 1; i <= itemCount; i++) items.Add(i.ToString());

// The "makeItem" function will be called as needed // when the ListView needs more items to render Func<VisualElement> makeItem = () => new Label();

// As the user scrolls through the list, the ListView object // will recycle elements created by the "makeItem" // and invoke the "bindItem" callback to associate // the element with the matching data item (specified as an index in the list) Action<VisualElement, int> bindItem = (e, i) => (e as Label).text = items[i];

// Provide the list view with an explict height for every row // so it can calculate how many items to actually display const int itemHeight = 16;

var listView = new ListView(items, itemHeight, makeItem, bindItem);

listView.selectionType = SelectionType.Multiple;

listView.onItemChosen += obj => Debug.Log(obj); listView.onSelectionChanged += objects => Debug.Log(objects);

listView.style.flexGrow = 1.0f;

rootVisualElement.Add(listView); } } }

静态变量

borderUssClassNameThe USS class name. Enable the showBorder property to apply this class to the ListView.
dragHoverBarUssClassNameThe USS class name of the drag hover bar.
itemAlternativeBackgroundUssClassNameThe USS class name for odd rows in the ListView.
itemDragHoverUssClassNameThe USS class name that is applied to the element on drag hover.
itemSelectedVariantUssClassNameThe USS class name of item elements in elements of this type, when they are selected.
itemUssClassNameThe USS class name of item elements in elements of this type.
ussClassName此类型元素的 USS 类名称。

变量

bindItem用于将数据项绑定到视觉元素的回调。
horizontalScrollingEnabledThis flag indicates whether the ListView should show a horizontal scroll bar when its content does not fit. The default value is False.
itemHeightListView 要求所有视觉元素具有相同的高度,以便可以计算合理的滚动条大小。必须设置此属性才能使列表视图正常运行。
itemsSource项数据源。必须设置此属性才能使列表视图正常运行。
makeItem用于构造 VisualElement(将用作列表中每个回收和重新绑定的元素的模板)的回调。必须设置此属性才能使列表视图正常运行。
reorderableGets or sets a value that indicates whether the user can drag list items to reorder them.
resolvedItemHeightComputed pixel aligned height for the list elements. This value will change depending on the current panel's dpi scaling. See Also: ListView.itemHeight.
selectedIndexReturns the selected item's index in the items source. If multiple items are selected, returns the first selected item's index.
selectedIndicesThe indices of selected items in the items source.
selectedItemReturns the selected item from the items source. If multiple items are selected, returns the first selected item.
selectedItemsThe selected items from the items source.
selectionTypeControls the selection state. You can set the state to disable selections, have one selectable item, or have multiple selectable items.
showAlternatingRowBackgroundsEnable this property to display alternating background colors for rows in the ListView.
showBorderEnable this property to display a border around the ListView.
showBoundCollectionSizeWhen you bind a list view to an array, this property controls whether the list view displays the collection size as the first list item. Set to true to display the collection size, false to omit it. Default is true. See Also: UnityEditor.UIElements.BindingExtensions.Bind
unbindItemCallback for unbinding a data item from the visual element.

公共函数

AddToSelectionAdds an item to the collection of selected items.
ClearSelectionUnselects any selected items.
Refresh清除,重新创建所有可见的视觉元素,并重新绑定所有项。每当项源发生变化时,就应该调用此方法。
RemoveFromSelectionRemoves an item from the collection of selected items.
ScrollTo滚动到特定视觉元素。
ScrollToItem滚动到特定项索引并使其可见。
SetSelectionSets the currently selected item.
SetSelectionWithoutNotifySets a collection of selected items without triggering a selection change callback.

Events

onItemChosen选择某个项(双击)时的回调。这与直接选择不同。
onItemsChosenCallback triggered when the user 'acts on' a selection of one or more items, for example by double-clicking or pressing Enter.
onSelectionChangeCallback triggered when the selection changes.
onSelectionChangedCallback triggered when the selection changes.

继承的成员

静态变量

disabledUssClassName本地禁用元素的 USS 类名称。

变量

binding要更新的绑定对象。
bindingPath要绑定的目标属性的路径。
canGrabFocus如果元素可以获得焦点,则返回 true。
delegatesFocus元素是否应将焦点委托给其子项。
focusable如果元素可以获得焦点,则为 true。
focusController返回此元素的焦点控制器。
tabIndex用于对焦点环中可获得焦点的元素排序的整数。必须大于或等于零。
childCount此对象的 contentContainer 中的子元素数
contentContainer子元素通常添加到此元素中
customStyle返回元素的自定义样式属性访问器。
enabledInHierarchy如果 VisualElement 是在它自己的层级视图中启用,则返回 true。
enabledSelf如果 VisualElement 是本地启用,则返回 true。
experimental返回 UIElements 实验性接口。
generateVisualContent在需要(重新)生成 VisualElement 可视内容时调用。
hierarchy访问此元素物理层级视图
pickingMode确定在 mouseEvents 或 IPanel.Pick 查询期间是否可以选取此元素。
resolvedStyle返回 VisualElement 解析的样式值。
schedule检索此 VisualElement 的 IVisualElementScheduler
style引用此元素的样式对象。
styleSheets返回一个 VisualElementStyleSheetSet,用于操作附加到此元素的样式表。
this[int]访问此元素物理层级视图
tooltip用户将元素悬停一小段时间后显示在信息框内的文本。
usageHints提示值的组合,用于指定 VisualElement 的高级预期使用模式。 仅当 VisualElement 尚未成为 Panel 的一部分时,才可以设置此属性。一旦成为 Panel 的一部分,此属性实际上会变为只读状态,尝试更改它将抛出异常。 适当的 UsageHints 的规范会促使系统根据预期的使用模式更好地决定如何处理或加速某些操作。 请注意,这些提示不影响行为或视觉效果,而只影响面板及其内部元素的总体性能。 通常,建议始终考虑指定适当的 UsageHints,但请注意,在某些情况下(例如,由于目标平台的硬件限制),一些 UsageHints 可能会被内部忽略。
userData此属性可用于将特定于应用程序的用户数据与此 VisualElement 关联。
viewDataKey用于查看数据持久性(即树展开状态、滚动位置、缩放级别)。

公共函数

HandleEvent处理事件,通常是通过执行与事件关联的回调处理事件。
HasBubbleUpHandlers如果事件传播 BubbleUp 阶段的事件处理程序已附加到此对象,则返回 true。
HasTrickleDownHandlers如果事件传播 TrickleDown 阶段的事件处理程序已附加到此对象,则返回 true。
RegisterCallback向实例添加事件处理程序。如果已为同一阶段(TrickleDown 或 BubbleUp)注册了事件处理程序,则此方法没有效果。
SendEvent将事件发送到事件处理程序。
UnregisterCallback从此实例删除回调。
Blur通知元素释放焦点。
Focus尝试让此元素获得焦点。
Add向此元素的 contentContainer 添加一个元素
BringToFront将此元素放到其父子列表的末尾。此元素将显示在所有重叠的同级元素前方。
Children从元素的 contentContainer 返回元素
Clear从此元素的 contentContainer 中删除所有子元素
Contains如果元素是此 VisualElement 的直接子级,则返回 true
ElementAt检索相应位置的子元素
EnableInClassList启用或禁用具有给定名称的类。
FindAncestorUserData向上搜索此 VisualElement 的层级视图并检索存储的 userData(如果找到)。
FindCommonAncestor查找 VisualTree 层级视图中两个 VisualElement 之间的最低共同上级
GetClasses获取此元素的类。
GetFirstAncestorOfType从此元素的父级开始向上访问层级视图,返回第一个此类型的 VisualElement
GetFirstOfType从此元素开始向上访问层级视图,返回第一个此类型的 VisualElement
IndexOf检索指定的 VisualElement 的子索引。
Insert向此元素的 contentContainer 插入一个元素
MarkDirtyRepaint在下一帧触发 VisualElement 的重绘。
PlaceBehind将此元素放在其父子列表中同级元素之前紧邻的位置。如果此元素和同级元素位置重叠,此元素将显示在其同级元素之后。
PlaceInFront将此元素放在其父子列表中同级元素之后紧邻的位置。如果此元素和同级元素位置重叠,此元素将显示在其同级元素之前。
Remove从层级视图中删除此子级
RemoveAt从此元素的 contentContainer 中删除位于此位置的子元素
RemoveFromHierarchy将此元素从其父层级视图中删除
SendEvent将事件发送到事件处理程序。
SendToBack将此元素发送到其父子列表的开始处。此元素将显示在所有重叠的同级元素之后。
SetEnabled更改 VisualElement 启用状态。禁用的 VisualElement 不接收大多数事件。
Sort重新排序来自此 VisualElement contentContainer 的子元素。
ToggleInClassList在类列表中添加和删除给定类名之间切换。