Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Элементы управления содержимым

А.А. Волосевич | Иерархия классов | Свойства зависимостейи присоединённые свойства | Маршрутизируемыесобытия | Многопоточность в WPF | Приложения на основе страниц | Работа с панелью задач Windows 7 | Размер и выравнивание | Встроенные контейнеры компоновки | Прочие элементы управления |


Читайте также:
  1. A) расходуемые элементы
  2. Cвойства стандартных элементов управления
  3. Ii) Указатели на элементы массива
  4. III. Порядок формирования Молодежного парламента. Органы управления Молодежного парламента
  5. А) закреплено за ним на праве оперативного управления.
  6. Автоматизация управления процессом производства
  7. Адаптация системы управления

Элементы управления содержимым – это элементы, допускающие размещение единственного дочернего элемента, представляющего их содержимое. Элементы управления содержимым наследуются от класса ContentControl. У этого класса имеется объектное свойство Content и булево свойство HasContent.Если в Content помещается объект-наследник UIElement, для отображения вызывается метод OnRender()этого объекта. Для объектов других типов делается попытка применить шаблон данных. Если шаблон данных не задан в свойстве ContentTemplateили в ресурсах приложения, у дочернего элемента вызывается ToString(), а результат обрамляется в элемент TextBlock.

Элементы управления содержимым можно разбить на три подгруппы: кнопки, простые контейнеры, контейнеры с заголовком.

Все кнопки наследуются от абстрактного класса ButtonBase. Этот класс содержит событие Click, булево свойство IsPressedи свойство ClickMode– оноопределяет момент генерирования Click. Значениями ClickMode являются элементы одноимённого перечисления: Release (по умолчанию), Press иHover.

Элемент управленияButton определяет обычную кнопку, которая может быть кнопкой по умолчанию или кнопкой отмены. Это поведение контролируется булевыми свойствами IsDefault и IsCancel. Кнопка по умолчанию срабатывает при нажатии на клавиатуреENTER, кнопка отмены – при нажатии ESC.

ЭлементRepeatButton–кнопка, непрерывно генерирующая событие Click, если на ней задержать нажатие. Частота генерации события Clickопределяется свойствами Delayи Interval (целое число миллисекунд).

ToggleButton–кнопка с «залипанием». Будучи нажатой, она остаётся в таком состоянии, пока по ней не произведут повторное нажатие. Текущее состояние кнопки определяется свойствомIsChecked с типом bool?(если свойство IsThreeStateустановлено в true, нажатия на кнопку заставляют IsCheckedменяться по схеме «true-null-false»). При изменении свойства IsChecked кнопка ToggleButton генерирует события Checked, UncheckedиIndeterminate.

В WPFфлажок-переключатель формально относится к кнопкам и представлен классом CheckBox. Этот класс является прямым наследником ToggleButton с переписанным шаблоном внешнего вида.

Элемент управления RadioButton также унаследован от ToggleButton. Особенность RadioButton– поддержка группового поведения, при котором установка одного переключателя сбрасывает остальные. По умолчанию к одной группе относятся переключатели, имеющие общий родительский контейнер. Можно задать строковое свойство RadioButton.GroupName, чтобы определить собственный способ выделения группы переключателей.

<StackPanel Margin="10">

<Button Content="Ordinary Button" FontFamily="Arial"

Click="Button_Click" />

<CheckBox IsChecked="True" Content="CheckBox" />

<RadioButton GroupName="A">Option 1</RadioButton>

<RadioButton GroupName="A">Option 2</RadioButton>

<RadioButton GroupName="B">A Different Option 1</RadioButton>

<RadioButton GroupName="B">A Different Option 2</RadioButton>

</StackPanel>

 

privatevoid Button_Click(object sender, RoutedEventArgs e)

{

Title = "Button pressed";

}

Рис. 12. Кнопка, флажок, две группы RadioButton.

Перейдём к разбору простых контейнеров, которые (согласно своему названию) предназначены для простого обрамления дочернего содержимого. Один из простых контейнеров–элемент Label. Обычно он используется для представления текста, но в WPFего содержимое может быть любым. ОсобенностьLabel – поддержка «горячих клавиш», при помощи которых фокус ввода передаётся заданному элементу управления. Вот типичный пример такого использования Label (обратите внимание на синтаксис задания свойства Target и на применение символа подчёркивания для указания «горячей клавиши»U):

<Label Target="{Binding ElementName=userName}"Content="_User:"/>

<TextBoxx:Name="userName"/>

Элемент управления ToolTip отображает своё содержимое в виде всплывающей подсказки. ToolTip может содержать любые элементы управления, но с ними нельзя взаимодействовать.ToolTip определяет события Openи Close, а также несколько свойств для настройки своего поведения и внешнего вида. Особенность ToolTip в том, что этот элемент нельзя поместить в дерево элементов. Вместо этого требуется задавать одноимённое свойство, определённое в классе FrameworkElement.

<CheckBox Content="Simple CheckBox">

<CheckBox.ToolTip>

<StackPanel>

<Label FontWeight="Bold" Background="Blue"

Foreground="White" Content="The CheckBox"/>

<TextBlock Padding="10" TextWrapping="WrapWithOverflow"

Width="200">

CheckBox is a familiar control. But in WPF, it’s not

muchmore than a ToggleButton styled differently!

</TextBlock>

</StackPanel>

</CheckBox.ToolTip>

</CheckBox>

Рис. 13. Сложная всплывающая подсказка.

Элемент управления Frameпредназначен для изолирования своего содержимого от остальной части пользовательского интерфейса. Этот элемент напоминает аналог из HTML. Более того, Frameдействительно может отображать HTMLили XAML-страницу, если использовать его свойство Source:

<Frame Source="http://www.pinvoke.net"/>

Последняя группа элементов управления содержимым – контейнеры с заголовком. Эти элементы наследуются от класса HeaderedContentControl, который добавляет объектное свойство Headerк классу ContentControl.

Простейший контейнер с заголовком представлен элементомGroupBox. Следующий пример демонстрирует использование GroupBox для группировки нескольких флажков:

<GroupBox Header="Grammar">

<StackPanel>

<CheckBox Content="Check grammar as you type" />

<CheckBox Content="Hide grammatical errors" />

<CheckBox Content="Check grammar with spelling" />

</StackPanel>

</GroupBox>

Подчеркнём, что в заголовок контейнера может быть помещено любое содержимое– например, кнопка:

<GroupBox.Header>

<Button>Grammar</Button>

</GroupBox.Header>

Элемент управления Expander напоминает GroupBox, но содержит в заголовке кнопку, которая позволяет спрятать и показать содержимое контейнера. Можно настроить направление «разворачивания» контейнера.

<Expander Header="Grammar">

<StackPanel>

<!-- содержимое StackPanel- три переключателя -->

</StackPanel>

</Expander>

Рис. 14. Expander, раскрытый вниз.


Дата добавления: 2015-11-14; просмотров: 85 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Прокрутка и декорирование содержимого| Списковые элементы управления

mybiblioteka.su - 2015-2024 год. (0.009 сек.)