Главная » WPF » Создание  новых списков  с помощью шаблонов

0

В самом начале обсуждения списков мы упомянули злополучный элемент RadioButtonList как пример специализированного элемента, который был изъят из WPF и заменен шаблоном. Список  переключателей – это такой список, в ко# тором отдельные элементы  и выбранный  элемент представлены  переключателя# ми (рис. 3.20).

Реализация стиля, описывающего  список переключателей, не потребует мно# го разметки,  зато в ней используется довольно  сложный  синтаксис  привязки к данным. Детально  мы рассмотрим  его ниже, а пока достаточно  знать, что наша цель – привязать свойство IsChecked объекта RadioButton к свойству  IsSelected объекта ListBoxItem:

<ListBox>

<ListBox.ItemContainerStyle>

<Style TargetType=’{x:Type ListBoxItem}’>

<Setter Property=’Template’>

<Setter.Value>

<ControlTemplate TargetType=’{x:Type ListBoxItem}’>

<RadioButton

IsChecked=’{Binding

Path=IsSelected,RelativeSource={RelativeSource TemplatedParent}}’ Content=’{TemplateBinding Property=Content}’ />

</ControlTemplate>

</Setter.Value>

</Setter>

</Style>

</ListBox.ItemContainerStyle>

<sys:String>Option 1</sys:String>

<sys:String>Option 2</sys:String>

<sys:String>Option 3</sys:String>

<sys:String>Option 4</sys:String>

</ListBox>

На этом примере еще только начинает  проявляться вся сила системы шабло#

нов вкупе с правильным выбором базовых классов.

Меню и панели инструментов

До сих пор я избегал упоминаний о двух очень интересных  списковых  эле# ментах  управления: MenuItem и ToolBar.  Хотя  на первый  взгляд  это может показаться странным, но логически  меню – не что иное, как элемент TreeView с очень специальным шаблоном.  Взглянув на объектную  модель, мы убежда# емся, что классы  TreeViewItem и MenuItem наследуют  одному и тому же ба# зовому классу  HeaderedItemsControl. Хотя эти элементы  управления приме# няются  совсем не так, как стандартные  списки, важно помнить, что и к меню, и к панелям  инструментов в полной  мере применимы модель содержимого  и шаблоны.

Меню и панели инструментов идут рука об руку. Они предоставляют по суще# ству одинаковую функциональность: возможность выполнить одну или несколь# ко команд. Основное  различие  между ними – это место на экране и модель взаи# модействия. Один и тот же набор команд на панели инструментов занимает боль# ше места, чем в меню, зато доступ к ним проще и быстрее. Как правило, на пане# ли инструментов размещаются  альтернативные варианты  уже имеющихся  в ме# ню команд. Меню позволяют  организовать глубокую иерархию  и занимают  ми# нимум места, однако найти в них нужную команду бывает нелегко. Обычно и ме# ню, и панели  инструментов тесно связано  с командами,  но это вопрос мы будем обсуждать в главе 7.

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

По теме:

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