Описание
Область с вертикальной прокруткой, которая создает визуальные элементы только для видимых элементов, позволяя привязывать гораздо больше элементов. По мере прокрутки пользователем визуальные элементы перерабатываются и привязываются к новым элементам данных.
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 | Переключает между добавлением и удалением данного имени класса из списка классов. |

