Читайте также:
|
|
Элементы управления содержимым – это элементы, допускающие размещение единственного дочернего элемента, представляющего их содержимое. Элементы управления содержимым наследуются от класса 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 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Прокрутка и декорирование содержимого | | | Списковые элементы управления |