Главная » WPF » Свойство Items

0

Если класс ContentPresenter так хорош для одиночного  элемента,  то почему бы не взять его за основу для списка элементов.  Вариант модели множественно# го содержимого  очень похож на случай одиночного содержимого,  только вместо свойства  Content, значением  которого является объект, мы применяем  свойство Items, для которого значением  служит список:

ListBox l = new ListBox();

l.Items.Add(«Hello»);

l.Items.Add(«There»);

l.Items.Add(«World»);

При взгляде  на результирующее дерево отображения (рис. 3.5) хочется воск#

ликнуть «Однако!».

Да, оно получилось  не маленьким.  В дереве отображения для ListBox есть нес# колько  объектов  ContentPresenter. Начав  снизу (элементы,  напечатанные  более крупным шрифтом), мы наблюдаем знакомый  по Button паттерн: объект ContentPresenter, содержащий элемент TextBlock. ListBoxItem соответствует  мо# дели одиночного содержимого  – один элемент управления со свойством Content, как и в случае Button.

Рис. 3.5. Элемент ListBox, содержащий несколько строк, и его дерево отображения

Поднимаясь выше, мы доходим до объекта ItemsPresenter. Если ContentPresenter – основа для отображения элементов, содержимое которых сос# тоит из одного объекта, то ItemsPresenter предназначен  для вывода элементов  с множественным содержимым.  Этот класс, работая совместно с несколькими дру# гими, динамически генерирует  необходимые  объекты, каждый из которых поль# зуется экземпляром класса ContentPresenter.

Последний  объект,   в  название   которого   есть   слово   «presenter», –  это ScrollContentPresenter, который обеспечивает прокрутку списка. Этот объект  явля# ется не частью базовой модели содержимого,  а просто реализацией примитивного элемента управления ScrollViewer, отвечающего за прокрутку любого содержимого.

Источник: К. Андерсон  Основы  Windows Presentation Foundation. Пер. с англ. А. Слинкина — М.: ДМК Пресс, 2008 — 432 с.: ил.

По теме:

  • Комментарии