Windows
<<  Галерея портретов исполнителей Шаблон для спортивного стиля  >>
Классы Windows Presentation Foundation
Классы Windows Presentation Foundation
Элементы управления
Элементы управления
Модели содержимого (content models)
Модели содержимого (content models)
Элементы для ввода и отображения текста
Элементы для ввода и отображения текста
Панели размещения
Панели размещения
Класс Panel
Класс Panel
Классы Visual,UIElement и FrameworkElement
Классы Visual,UIElement и FrameworkElement
Классы панелей размещения
Классы панелей размещения
Панель Canvas
Панель Canvas
Панель Grid
Панель Grid
Grid
Grid
Слот для дочернего элемента панели размещения
Слот для дочернего элемента панели размещения
Размещение элементов
Размещение элементов
Панели StackPanel, DockPanel и WrapPanel
Панели StackPanel, DockPanel и WrapPanel
Декораторы
Декораторы
Декораторы
Декораторы
Expander
Expander
Кнопки
Кнопки
Класс ItemsControl
Класс ItemsControl
Списки и деревья
Списки и деревья

Презентация: «Классы Windows Presentation Foundation». Автор: Березина Н.И.. Файл: «Классы Windows Presentation Foundation.pptx». Размер zip-архива: 236 КБ.

Классы Windows Presentation Foundation

содержание презентации «Классы Windows Presentation Foundation.pptx»
СлайдТекст
1 Классы Windows Presentation Foundation

Классы Windows Presentation Foundation

2 Элементы управления

Элементы управления

Button

В WPF элементами управления принято называть только те компоненты, которые взаимодействуют с пользователем. При проектировании элементов управления WPF в основу были положены три принципа композиция; развитое содержимое; простая модель программирования. Принцип композиции состоит в том, что элементы составляются из других элементов.

Кнопка представляет собой композицию элементов ButtonChrome (фон кнопки), ContentPresenter(создает пользовательский интерфейс элемента) и TextBlock (отображение текста).

Содержимое элемента управления может представлять собой простую строку, сложный объект данных или дерево элементов.

3 Модели содержимого (content models)

Модели содержимого (content models)

Четыре модели содержимого элементов управления WPF определяются базовыми классами: ContentControl содержит один элемент; HeaderedContentControl содержит один элемент + заголовок; ItemsControl содержит коллекцию элементов; HeaderedItemsControl содержит коллекцию элементов + заголовок; С содержимым связаны свойства

Классы с заголовками имеют свойство для заголовка элемента управления

public Object Content { get; set; } public ItemCollection Items { get; }

public Object Header { get; set; }

4 Элементы для ввода и отображения текста

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

Свойства, которые объявлены как содержимое, в элементах управления для ввода и отображения текста:

[ContentPropertyAttribute("Text")] public class TextBox : TextBoxBase, IAddChild {…} [ContentPropertyAttribute("Document")] public class RichTextBox : TextBoxBase, IAddChild {…} [ContentPropertyAttribute("Inlines")] public class TextBlock : FrameworkElement, IContentHost, IAddChild, IServiceProvider {…}

TextBlock

Упрощенный элемент для отображения текста. Оптимизирован для отображения одной строки текста.

TextBox

Элемент управления для отображения или редактирования неформатированного текста.

RichTextBox

Элемент управления для отображения или редактирования текста с возможностью форматирования.

PasswordBox

Элемент управления для ввода и обработки паролей.

5 Панели размещения

Панели размещения

Панели размещения представляют собой контейнеры для дочерних элементов. Имеют общий базовый класс System.Windows.Controls.Panel. Панели размещения могут быть вложенными. Окно верхнего уровня принадлежит классу System.Windows.Window, который допускает в качестве своего содержимого только один объект, обычно это одна из панелей размещения (panel classes).

6 Класс Panel

Класс Panel

Класс Panel реализует интерфейс

Дочерние элементы хранятся в строго типизированной коллекции UIElementCollection, состоящей только из объектов UIElement

Дочерние элементы Panel не получают события мыши, если не определено свойство Background. Сами элементы Panel по умолчанию не получают фокус.

[ContentPropertyAttribute("Children")] public abstract class Panel : FrameworkElement, IAddChild

public interface IAddChild { void AddChild( Object value ); void AddText( string text ); }

public UIElementCollection Children { get; }

7 Классы Visual,UIElement и FrameworkElement

Классы Visual,UIElement и FrameworkElement

Абстрактный базовый класс Visual предоставляет поддержку графики низкого уровня для отрисовки элементов. Объект Visual поддерживает преобразование координат, расчеты ограничивающих прямоугольников визуального объекта и проверку нажатия - определение принадлежности заданной координаты к области, занимаемой визуальным объектом. UIElement является базовым классом для реализаций уровня ядра WPF. В классе UIElement определена большая часть общего поведения элементов при вводе и фокусировании - события ввода с клавиатуры, мыши и пера. UIElement поддерживает модель событий WPF, включая методы для вызова перенаправленных событий, источником которых является экземпляр элемента. FrameworkElement предоставляет набор свойств, событий и методов на уровне среды WPF. В частности FrameworkElement поддерживает события времени существования объекта, привязку данных и стиль.

8 Классы панелей размещения

Классы панелей размещения

Grid

Размещает дочерние элементы в ячейках сетки, состоящей из строк и столбцов.

UniformGrid

Упрощенный аналог Grid. Все столбцы имеют одинаковую ширину, а строки одинаковую высоту.

Canvas

Размещает дочерние элементы на основе относительных координат в области Canvas.

StackPanel

Размещает дочерние элементы в одну строку ( или столбец).

WrapPanel

Размещает дочерние элементы в одну строку ( или столбец) с возможностью переноса на следующую строку (столбец).

DockPanel

Поддерживает стыковку – размещение дочерних элементов у внутренних границ родительских.

VirtualizingPanel

Абстрактный класс. Предоставляет средства для создания элементов пользовательского интерфейса только для тех элементов коллекции, которые видимы на экране. Оптимизирует работу с большими коллекциями дочерних элементов.

9 Панель Canvas

Панель Canvas

Панель Canvas размещает дочерние элементы на основе относительных координат в области панели. Координаты задаются с помощью четырех присоединенных(attached properties) свойств - Left, Top, Right и Bottom. Панель Canvas никогда не изменяет размеры своих дочерних элементов. Свойство ZIndex определяет порядок, в котором отображаются дочерние элементы. Для перекрывающихся элементов, верхним окажется элемент с большим значением ZIndex. По умолчанию Canvas разрешает прорисовку потомков вне своих границ. Свойство ClipToBounds (умолчание false) управляет этим разрешением. Панель Canvas наименее гибкая и самая производительная, так как не изменяет размеры своих дочерних элементов.

10 Панель Grid

Панель Grid

Размещение в сетке (панели Grid) состоит из определения столбцов и строк сетки; распределения дочерних элементов по слотам сетки. Строки и столбцы сетки описываются классами RowDefinition и ColumnDefinition. Для строк и столбцов сетки класс Grid поддерживает две коллекции, которые доступны через свойства ColumnDefinitions и RowDefinitions.

Распределение дочерних элементов по слотам реализуется с помощью присоединенных свойств Row, RowSpan, Column и ColumnSpan, определенных в классе Grid. Свойства Row и Column определяют номер строки и столбца, в которых размещается дочерний элемент (нумерация от 0). Свойства RowSpan и ColumnSpan (тип int) указывают, какое число строк и столбцов может занять дочерний элемент. В панель Grid можно включить один или несколько элементов GridSplitter для изменения размеров столбцов и строк во время выполнения приложения.

public sealed class RowDefinitionCollection : IList<RowDefinition>, ICollection<RowDefinition>, IEnumerable<RowDefinition>, IList, ICollection, IEnumerable public sealed class RowDefinitionCollection : IList<RowDefinition>, ICollection<RowDefinition>, IEnumerable<RowDefinition>, IList, ICollection, IEnumerable

11 Grid

Grid

Пример

В примере коллекция RowDefinitions содержит две строки, коллекция ColumnDefinitions состоит из трех столбцов. Обе строки имеют равную высоту. Ширина первого столбца равна 50, все остальное пространство второй и третий столбец делят в отношении 2 : 1. Кнопка button_Add1 размещается в третьем столбце и второй строке, а кнопка button_Add2 - во втором столбце и первой строке.

<Grid Name="grid1" ShowGridLines="True"> <Grid.RowDefinitions> <RowDefinition Height="1*" /> <RowDefinition Height="1*" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="50" /> <ColumnDefinition Width="2*" /> <ColumnDefinition Width="1*" /> </Grid.ColumnDefinitions> <Button Grid.Column= "2" Grid.Row="1" Margin="5,29,5,50" Name="button_Add1“ Click="button_Add_Click">Add</Button> <Button Grid.Column="1" Margin="5,29,5,50" Name="button_Add2" Click="button_Add_Click">Add</Button> </Grid>

12 Слот для дочернего элемента панели размещения

Слот для дочернего элемента панели размещения

Концептуально модель размещения состоит в том, что родительский элемент выделяет пространственный слот для дочернего элемента, в котором тот может занять любую часть. Расположение дочернего элемента внутри слота управляется свойствами Margin, HorizontalAlignment и VerticalAlignment, которые унаследованы от класса FrameworkElement. Свойство Margin задает поля – пространство внутри слота, но вне содержимого дочернего элемента.

Структура Thickness имеет свойства Left, Top, Bottom, Right типа double . По умолчанию единицей измерения является аппаратно-независимая единица (1/96 дюйма). Можно использовать см (cm), дюймы (in) или пункты (pt), например,

Свойства HorizontalAlignment и VerticalAlignment определяют выравнивание элемента относительно области, из которой поля уже исключены .

Перечисление HorizontalAlignment имеет значения Left, Center, Right и Stretch. Перечисление VerticalAlignment имеет значения Top, Center, Bottom и Stretch. Явно заданные значения свойств Height и Width имеют приоритет над Stretch.

public Thickness Margin { get; set; }

<Button Margin="20,2.3cm,1.2in,20pt" Name="button1">Button</Button>

public HorizontalAlignment HorizontalAlignment { get; set; } public VerticalAlignment VerticalAlignment { get; set; }

13 Размещение элементов

Размещение элементов

Размещение элементов выполняется в два прохода – измерение и установка: на этапе измерения проходится все дерево отображения и у каждого дочернего элемента запрашиваются предпочтительные размеры (desired size); с учетом ограничений для конкретной панели размещения вычисляются фактические размеры (actual size) элементов и происходит их установка. С увеличением размера коллекции Children дочерних элементов увеличивается и объем вычислений. Процесс выполняется снова, когда в коллекцию добавляются новые элементы, выполняются трансформации LayoutTransform и RenderTransform или явно вызывается метод UpdateLayout.

14 Панели StackPanel, DockPanel и WrapPanel

Панели StackPanel, DockPanel и WrapPanel

Панель StackPanel размещает дочерние элементы построчно. Ориентация строки определяется значением свойства

Перечисление Dock имеет значения Top, Bottom, Left, Right.

Свой размер StackPanel вычисляет на основе максимальных размеров своих дочерних элементов. Суммарный размер дочерних элементов не ограничен, панель может содержать любое число потомков. WrapPanel переносит элементы на другую строку(столбец), когда очередной добавленный элемент достигает границы панели. DockPanel дает возможность размещать дочерние элементы с разных сторон панели. Позиционирование зависит от значения свойства Dock дочернего элемента. Последний элемент может занять все оставшееся свободное пространство внутри панели, если значение свойства LastChildFill равно true. В классе DockPanel определено присоединенное свойство (attached property) Dock и методы для изменения значения этого свойства.

public Orientation Orientation { get; set; }

public static Dock GetDock( UIElement element ); public static void SetDock( UIElement element, Dock dock );

15 Декораторы

Декораторы

Классы-декораторы создают визуальные эффекты для одного элемента управления – своего содержимого.

Декорируемый элемент управления определяется свойством Child.

В примере с элементом управления TextBox связан декоратор Border

[ContentPropertyAttribute("Child")] public class Decorator : FrameworkElement, IAddChild

public virtual UIElement Child { get; set; }

<Border BorderThickness= "5" BorderBrush="Green" Height="76" VerticalAlignment="Top" Margin="0,0,12,0"> <TextBox Height="23" Margin="10" Name="textBox1" VerticalAlignment="Top" /> </Border>

16 Декораторы

Декораторы

Border

Рисует прямоугольную границу и/или фон вокруг другого элемента. Свойство public CornerRadius CornerRadius { get; set; } дает возможность задать скругление углов прямоугольника. Четыре свойства TopLeft, TopRight, BottomLeft, BottomRight типа double структуры CornerRadius определяют углы, к которым применяются скругления.

BulletDecorator

Содержит два элемента управления, доступные через свойства Child и Bullet. Элемент Bullet используется как маркер, по которому выравнивается дочерний элемент.

Viewbox

Элемент оформления содержимого, который позволяет растягивать и масштабировать дочерний элемент для заполнения пространства Viewbox.

ButtonChrome

Дает возможность установить для кнопок пользователя внешний вид, соответствующий теме, которая не совпадает с установленной для компьютера. Класс определен в пространстве имен Microsoft.Windows.Themes в сборке PresentationFramework.Aero.dll.

17 Expander

Expander

Элемент управления Expander состоит из заголовка и содержимого (Content), которое пользователь может свернуть или развернуть. Направление, в котором раскрывается окно, можно задать с помощью свойства

Перечисление ExpandDirection имеет значения Up, Down, Left, Right. В примере Expander содержит панель Grid c элементами управления TextBox и Button и раскрывается вправо.

Элемент Expander не поддерживает автоматическую прокрутку содержимого. Для прокрутки надо включить содержимое в элемент управления ScrollViewer.

public ExpandDirection ExpandDirection { get; set; }

<Expander ExpandDirection="Right" Header="Input" Margin="10,96,216,12" Name="expander1"> <Grid Width="193" Height="117"> <TextBox Height="38" Margin="6,10,14,0" Name="textBox2" VerticalAlignment="Top" /> <Button Height="31" Margin="6,0,14,19" Name="button1" VerticalAlignment="Bottom" > Apply </Button> </Grid> </Expander>

18 Кнопки

Кнопки

Button

Элемент управления "кнопка" Windows, порождающий при нажатии событие ButtonBase.Click.

RepeatButton

Кнопка повтора генерирует событие Click с заданным интервалом (свойство Interval) с момента, который зависит от значения свойства Delay, и до момента отпускания.

RadioButton

Объединенные в группу элементы RadioButton работают как переключатели. Элементы RadioButton, расположенные в одном родительском объекте, образуют группу. Для группировки можно также использовать свойство GroupName (для каждого элемента).

CheckBox

Переключатель, который может находиться в одном из трех состояний: установлен (true), снят (false) или не определен (null). Информацию о состоянии кнопки содержит свойство public Nullable<bool> IsChecked { get; set; } . Для переключения между тремя состояниями значение свойства IsThreeState должно иметь значение true.

19 Класс ItemsControl

Класс ItemsControl

Класс ItemsControl является базовым для элементов управления, работающих с коллекцией элементов.

В классе ItemsControl определены два свойства для работы с коллекцией элементов

Свойство Items можно использовать для изменения коллекции только в случае, когда свойство ItemsSource имеет значение null. Как только свойству ItemsSource присвоено ненулевое значение, коллекция Items становится доступной только для чтения. Когда свойству ItemsSource присваивается значение null, существующая коллекция удаляется и свойство Items ссылается на пустую коллекцию. Теперь Items можно использовать для изменения коллекции.

public class ItemsControl : Control, IAddChild {…}

public IEnumerable ItemsSource {get; set; } public ItemCollection Items { get; }

20 Списки и деревья

Списки и деревья

ListBox

Элемент управления cодержит список элементов для выбора одного или нескольких элементов.

ComboBox

Элемент управления для выбора значения из раскрывающегося списка.

ListView

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

TreeView

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

«Классы Windows Presentation Foundation»
http://900igr.net/prezentacija/informatika/klassy-windows-presentation-foundation-103406.html
cсылка на страницу
Урок

Информатика

130 тем
Слайды
900igr.net > Презентации по информатике > Windows > Классы Windows Presentation Foundation