Описание
Область с вертикальной прокруткой, которая создает визуальные элементы только для видимых элементов, позволяя привязывать гораздо больше элементов. По мере прокрутки пользователем визуальные элементы перерабатываются и привязываются к новым элементам данных.
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().Show();
}
public void OnEnable()
{
// Создаем список данных, здесь просто числа в интервале [1, 1000]
const int itemCount = 1000;
var items = new List(itemCount);
for (int i = 1; i <= itemCount; i++)
items.Add(i.ToString());
// Функция makeItem будет вызываться по мере необходимости
// когда the ListView требуется больше элементов для рендера
Func<VisualElement> makeItem = () => new Label();
// Когда пользователь прокручивает список объектов ListView
// будет перерабатывать элементы, созданные "makeItem"
// и вызывать обратный вызов "bindItem", чтобы связать
// элемент с соответствующим элементом данных (указанный как индекс в списке)
Action<VisualElement, int> bindItem = (e, i) => (e as Label).text = items[i];
// Предоставляем списковому представлению явную высоту для каждой строки
// чтобы он мог рассчитать, сколько элементов нужно отобразить на самом деле
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);
}
}
}
Статические Свойства
borderUssClassName | Имя класса USS. Включите свойство showBorder, чтобы применить этот класс к ListView. |
dragHoverBarUssClassName | Имя класса USS для полосы перетаскивания. |
itemAlternativeBackgroundUssClassName | Имя класса USS для нечетных строк в ListView. |
itemDragHoverUssClassName | Имя класса USS, которое применяется к элементу при перетаскивании. |
itemSelectedVariantUssClassName | Имя класса USS элементов элемента в элементах этого типа, когда они выбраны. |
itemUssClassName | Имя класса USS элементов элемента в элементах этого типа. |
ussClassName | Имя класса USS для элементов этого типа. |
Свойства
bindItem | Обратный вызов для привязки элемента данных к визуальному элементу. |
horizontalScrollingEnabled | Этот флаг указывает, должен ли ListView отображать горизонтальную полосу прокрутки, когда его содержимое не помещается. Значение по умолчанию неверно. |
itemHeight | ListView требует, чтобы все визуальные элементы имели одинаковую высоту, чтобы он мог вычислить разумный размер прокрутки. Это свойство должно быть установлено для работы представления списка. |
itemsSource | Источник данных товаров. Это свойство должно быть установлено для работы представления списка. |
makeItem | Обратный вызов для построения VisualElement, который будет служить шаблоном для каждого повторно используемого и повторно связанного элемента в списке. Это свойство должно быть установлено для работы представления списка. |
reorderable | Получает или задает значение, указывающее, может ли пользователь перетаскивать элементы списка, чтобы изменить их порядок. |
resolvedItemHeight | Вычисленная высота с выравниванием по пикселям для элементов списка. Это значение будет меняться в зависимости от масштабирования текущей панели в dpi. Смотрите так же: ListView.itemHeight. |
selectedIndex | Возвращает индекс выбранного элемента в источнике элементов. Если выбрано несколько элементов, возвращает индекс первого выбранного элемента. |
selectedIndices | Индексы выбранных элементов в источнике элементов. |
selectedItem | Возвращает выбранный элемент из источника элементов. Если выбрано несколько элементов, возвращает первый выбранный элемент. |
selectedItems | Выбранные элементы из источника элементов. |
selectionType | Управляет состоянием выбора. Вы можете установить состояние для отключения выбора, иметь один выбираемый элемент или иметь несколько выбираемых элементов. |
showAlternatingRowBackgrounds | Включает это свойство, чтобы отображать чередующиеся цвета фона для строк в ListView. |
showBorder | Включает это свойство, чтобы отобразить границу вокруг ListView. |
showBoundCollectionSize | Когда вы привязываете представление списка к массиву, это свойство определяет, будет ли представление списка отображать размер коллекции в качестве первого элемента списка. Установите значение true, чтобы отобразить размер коллекции, и значение false, чтобы пропустить его. Значение по умолчанию - true. Смотрите так же: UnityEditor.UIElements.BindingExtensions.Bind |
unbindItem | Обратный вызов для отвязки элемента данных от визуального элемента. |
Публичные Методы
AddToSelection | Добавляет элемент в коллекцию выбранных элементов. |
ClearSelection | Отменяет выбор любых выбранных элементов. |
Refresh | Очищает, воссоздайте все видимые визуальные элементы и заново привяжите все элементы. Это должно вызываться всякий раз, когда изменяется источник элементов.. |
RemoveFromSelection | Удаляет элемент из коллекции выбранных элементов. |
ScrollTo | Прокручивает до определенного визуального элемента. |
ScrollToItem | Прокручивает до определенного индекса элемента и сделайте его видимым. |
SetSelection | Устанавливает текущий выбранный элемент. |
SetSelectionWithoutNotify | Устанавливает коллекцию выбранных элементов без запуска обратного вызова изменения выбора. |
События
onItemChosen | Обратный вызов при выборе элемента (двойной щелчок). Это отличается от простого выбора. |
onItemsChosen | Обратный вызов запускается, когда пользователь «воздействует» на выбор одного или нескольких элементов, например, дважды щелкнув или нажав Enter. |
onSelectionChange | Обратный вызов срабатывает при изменении выбора. |
onSelectionChanged | Обратный вызов срабатывает при изменении выбора. |
Унаследованные члены
Статические Свойства
disabledUssClassName | Имя класса USS локальных отключенных элементов. |
Свойства
binding | Объект привязки, который будет обновлен. |
bindingPath | Путь целевого свойства для привязки. |
canGrabFocus | Вовращает true, если элемент может быть сфокусирован. |
delegatesFocus | Должен ли элемент делегировать фокус своим дочерним элементам. |
focusable | True, если элемент может быть сфокусирован. |
focusController | Вовращает контроллер фокуса для этого элемента. |
tabIndex | Целое число, используемое для сортировки объектов фокусировки в кольце фокусировки. Должно быть больше или равно нулю. |
childCount | Количество дочерних элементов в contentContainer объекта |
contentContainer | К этому элементу добавляются дочерние элементы |
customStyle | Возвращает метод доступа к свойствам пользовательского стиля для этого элемента. |
enabledInHierarchy | Возвращает true, если VisualElement включен в своей собственной иерархии. |
enabledSelf | Возвращает true, если VisualElement включен локально. |
experimental | Возвращает экспериментальные интерфейсы UIElement. |
generateVisualContent | Вызывается, когда необходимо (повторно) сгенерировать визуальное содержимое VisualElement. |
hierarchy | Доступ к физической иерархии этого элемента |
pickingMode | Определяет, можно ли выбрать этот элемент во время запросов mouseEvents или IPanel.Pick. |
resolvedStyle | Возвращает разрешенные значения стиля VisualElement. |
schedule | Извлекает IVisualElementScheduler этого VisualElement. |
style | Ссылка на объект стиля элемента. |
styleSheets | Возвращает VisualElementStyleSheetSet, управляющий таблицами стилей, прикрепленными к этому элементу. |
this[int] | Доступ к физической иерархии элемента |
tooltip | Текст, отображаемый внутри информационного поля после того, как пользователь наведет курсор на элемент в течение небольшого промежутка времени. |
usageHints | Комбинация значений подсказок, указывающих предполагаемые шаблоны использования высокого уровня для VisualElement. Это свойство можно задать только в том случае, если VisualElement еще не является частью панели. Будучи частью Panel, это свойство фактически становится доступным только для чтения, и попытки изменить его вызовут исключение. Спецификация надлежащих UsageHints побуждает систему принимать более эффективные решения о том, как обрабатывать или ускорять определенные операции на основе ожидаемого шаблона использования. Обратите внимание, что эти подсказки не влияют на поведенческие или визуальные результаты, а влияют только на общую производительность панели и элементов внутри. Как правило, рекомендуется всегда рассматривать вопрос об указании правильных UsageHints, но имейте в виду, что некоторые UsageHints могут игнорироваться внутри при определенных условиях (например, из-за аппаратных ограничений на целевой платформе). |
userData | Это свойство можно использовать для связывания пользовательских данных приложения с этим VisualElement. |
viewDataKey | Используется для сохранения данных просмотра (т. е. расширенных состояний дерева, положения прокрутки, уровня масштабирования). |
Публичные Методы
HandleEvent | Обработка события, чаще всего путем выполнения обратных вызовов, связанных с событием. |
HasBubbleUpHandlers | Возвращает true, если к этому объекту прикреплены обработчики событий для фазы распространения события BubbleUp. |
HasTrickleDownHandlers | Возвращает значение true, если к этому объекту присоединены обработчики событий для фазы распространения события TrickleDown. |
RegisterCallback | Добавляет обработчик событий в экземпляр. Если обработчик события уже зарегистрирован для той же фазы (TrickleDown или BubbleUp), то этот метод не действует. |
SendEvent | Отправляет событие обработчику событий. |
UnregisterCallback | Удаляет обратный вызов из экземпляра. |
Blur | Говорит элементу, чтобы освободить фокус. |
Focus | Пытается сосредоточить внимание на этом элементе. |
Add | Добавляет элемент в contentContainer этого элемента |
BringToFront | Помещает этот элемент в конец списка родительских дочерних элементов. Элемент будет визуально находиться перед любыми перекрывающимися одноуровневыми элементами. |
Children | Возвращает элементы из своего содержимогоконтейнера |
Clear | Удаляет все дочерние элементы из контейнера содержимого этого элемента. |
Contains | Возвращает true, если элемент является прямым дочерним элементом этого VisualElement. |
ElementAt | Извлекает дочерний элемент в позиции |
EnableInClassList | Включает или отключает класс с заданным именем. |
FindAncestorUserData | Находит иерархию этого визуального элемента и извлеките сохраненные пользовательские данные, если они будут найдены. |
FindCommonAncestor | Находит наименьшего общего предка между двумя элементами VisualElements внутри иерархии VisualTree. |
GetClasses | Получает классы для этого элемента. |
GetFirstAncestorOfType | Проходит вверх по иерархии, начиная с родительского элемента, и возвращает первый VisualElement этого типа. |
GetFirstOfType | Проходит вверх по иерархии, начиная с этого элемента, и возвращает первый VisualElement этого типа. |
IndexOf | Извлекает дочерний индекс указанного VisualElement. |
Insert | Вставьте элемент в contentContainer этого элемента |
MarkDirtyRepaint | Запускает перерисовку VisualElement в следующем кадре. |
PlaceBehind | Помещает элемент прямо перед родственным элементом в их родительском дочернем списке. Если элемент и позиция родственного элемента перекрываются, элемент будет визуально позади своего родственного элемента. |
PlaceInFront | Помещает элемент сразу после родственного элемента в список родительских дочерних элементов. Если элемент и позиция родственного элемента перекрываются, элемент будет визуально впереди своего родственного элемента. |
Remove | Удаляет дочерний элемент из иерархии |
RemoveAt | Удалите дочерний элемент, расположенный в этой позиции, из контейнера содержимого этого элемента. |
RemoveFromHierarchy | Удаляет элемент из его родительской иерархии |
SendEvent | Отправляет событие обработчику событий. |
SendToBack | Отправляет элемент в начало списка родительских дочерних элементов. Элемент будет визуально позади любых перекрывающихся элементов родственного уровня. |
SetEnabled | Изменяет состояние включения VisualElement. Отключенный VisualElement не получает большинство событий. |
Sort | Переупорядочивает дочерние элементы из этого контейнера содержимого VisualElement. |
ToggleInClassList | Переключает между добавлением и удалением данного имени класса из списка классов. |