Классы Windows Presentation Foundation System.Object DispatcherObject ApplicationDependencyObject Visual UIElement FrameworkElement Page Shape TextBlock.

Презентация:



Advertisements
Похожие презентации
Классы Windows Presentation Foundation System.Object DispatcherObject ApplicationDependencyObject Visual UIElement FrameworkElement Page Shape TextBlock.
Advertisements

Классы Windows Presentation Foundation System.Object DispatcherObject ApplicationDependencyObject Visual UIElement FrameworkElement Page Shape TextBlock.
Классы Windows Presentation Foundation System.Object DispatcherObject ApplicationDependencyObject Visual UIElement FrameworkElement Page Shape TextBlock.
Классы Windows Presentation Foundation System.Object DispatcherObject ApplicationDependencyObject Visual UIElement FrameworkElement Page Shape TextBlock.
Элементы управления в WPF Лекция 13. Элементы управления компоновкой. Контейнеры. Panels Элементы управления содержимым. ContentControls Элементы управления.
Классы Windows Presentation Foundation System.Object DispatcherObject ApplicationDependencyObject Visual UIElement FrameworkElement Page Shape TextBlock.
Литература 1.Мэтью Мак-Дональд. Windows Presentation Foundation в.NET 3.5 с примерами на C# 2008 для профессионалов - Изд. Вильямс, Крис Андерсон.
Объектно-ориентированный язык программирования. Выберите в реальной жизни любой объект (холодильник, магнитофон, машина) и опишите его свойства, методы,
Классы Windows Presentation Foundation - 1 System.ObjectDispatcherOjectApplicationDependencyObjectVisualUIElementFrameworkElementControlContentControlWindowButtonBaseButtonToggleButtonCheckBoxRadioButtonItemsControlSelectorListBoxListViewComboBoxTabContro
Элементы управления в WPF Лекция 14. Элементы управления компоновкой. Контейнеры. Panels Элементы управления содержимым. ContentControls Элементы управления.
Ресурсы WPF Два типа ресурсов WPF: объектные ресурсы (object resource) – определенный.NET-объект, который можно использовать многократно; ресурсы сборки.
Объектно-ориентированное программирование Основы языка программирования Lazarus.
Классы WindowsForms элементов управления для работы со структурами данных Control ListViewTreeViewListControl ComboBoxListBox CheckedListBox DataGridViewDataGrid.
Тема 5. Основы современной технологии программирования Программирование в средах современных информационных систем. Интегрированные системы разработки.
Модуль 7 Разработка и создание форм. Общие сведения Формы. Основные понятия. Создание форм с помощью мастера. Использование выражений в формах. Работа.
Михаил Черномордиков Developer Evangelist, Microsoft Россия
Графический интерфейс и его объекты. Понятие графического интерфейса Термин «интерфейс» широко используется в областях, где человеку приходится иметь.
Практические работы в Pascal ABC
Компонент DatagriedView.. DataGridView - стандартный GUI компонент для отображения и редактирования таблиц.
Интегрированная среда разработки языкаVisual BasicИнтегрированная среда разработки языкаVisual BasicИнтегрированная среда разработки языкаVisual BasicИнтегрированная.
Транксрипт:

Классы Windows Presentation Foundation System.Object DispatcherObject ApplicationDependencyObject Visual UIElement FrameworkElement Page Shape TextBlock Control ContentControl Frame Window NavigationWindow ButtonBase Button RepeatButton ToggleButton CheckBoxRadioButton RangeBase Slider ProgressBar TextBoxBase TextBox RichTextBox ItemsControl MenuBase MenuContextMenu HeaderedItemsControl MenuItemToolbar Selector TabControl ListBox ListView ComboBox TreeView Panel GridCanvas ContentElement FrameworkContentElement FrameworkTemplateStyle NavigationService

Button Элементы управления В WPF элементами управления принято называть только те компоненты, которые взаимодействуют с пользователем. При проектировании элементов управления WPF в основу были положены три принципа композиция; развитое содержимое; простая модель программирования. Принцип композиции состоит в том, что элементы составляются из других элементов. ButtonChrome ContentPresenter TextBlock Кнопка представляет собой композицию элементов ButtonChrome (фон кнопки), ContentPresenter(создает пользовательский интерфейс элемента) и TextBlock (отображение текста). Содержимое элемента управления может представлять собой простую строку, сложный объект данных или дерево элементов.

Модели содержимого (content models) Четыре модели содержимого элементов управления WPF определяются базовыми классами: ContentControl содержит один элемент; HeaderedContentControl содержит один элемент + заголовок; ItemsControl содержит коллекцию элементов; HeaderedItemsControl содержит коллекцию элементов + заголовок; С содержимым связаны свойства Control ContentControl Frame GroupItem Label ListBoxItem ButtonBase StatusBarItem ScrollViewer ToolTip UserControl Window HeaderedContentControl ExpanderGroupBoxTabItem ItemsControl MenuBase Selector StatusBar TreeView HeardedItemsControl MenuItemToolBarTreeViewItem public Object Content { get; set; } public ItemCollection Items { get; } Классы с заголовками имеют свойство для заголовка элемента управления public Object Header { get; set; }

Элементы для ввода и отображения текста TextBlockУпрощенный элемент для отображения текста. Оптимизирован для отображения одной строки текста. TextBox Элемент управления для отображения или редактирования неформатированного текста. RichTextBox Элемент управления для отображения или редактирования текста с возможностью форматирования. PasswordBox Элемент управления для ввода и обработки паролей. [ContentPropertyAttribute("Text")] public class TextBox : TextBoxBase, IAddChild {…} [ContentPropertyAttribute("Document")] public class RichTextBox : TextBoxBase, IAddChild {…} [ContentPropertyAttribute("Inlines")] public class TextBlock : FrameworkElement, IContentHost, IAddChild, IServiceProvider {…} Свойства, которые объявлены как содержимое, в элементах управления для ввода и отображения текста:

Панели размещения Панели размещения представляют собой контейнеры для дочерних элементов. Имеют общий базовый класс System.Windows.Controls.Panel. Панели размещения могут быть вложенными. Окно верхнего уровня принадлежит классу System.Windows.Window, который допускает в качестве своего содержимого только один объект, обычно это одна из панелей размещения (panel classes). UIElement FrameworkElement Panel Canvas DockPanel Grid TabPanel ToolBarOverflowPanel UniformGrid StackPanel ToolBarPanel VirtualizingPanel VirtualizingStackPanel WrapPanel

Класс Panel public UIElementCollection Children { get; } [ContentPropertyAttribute("Children")] public abstract class Panel : FrameworkElement, IAddChild Класс Panel реализует интерфейс public interface IAddChild {void AddChild( Object value ); void AddText( string text ); } Дочерние элементы хранятся в строго типизированной коллекции UIElementCollection, состоящей только из объектов UIElement Дочерние элементы Panel не получают события мыши, если не определено свойство Background. Сами элементы Panel по умолчанию не получают фокус.

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

Классы панелей размещения Grid Размещает дочерние элементы в ячейках сетки, состоящей из строк и столбцов. UniformGrid Упрощенный аналог Grid. Все столбцы имеют одинаковую ширину, а строки одинаковую высоту. Canvas Размещает дочерние элементы на основе относительных координат в области Canvas. StackPanelРазмещает дочерние элементы в одну строку ( или столбец). WrapPanel Размещает дочерние элементы в одну строку ( или столбец) с возможностью переноса на следующую строку (столбец). DockPanel Поддерживает стыковку – размещение дочерних элементов у внутренних границ родительских. VirtualizingPanel Абстрактный класс. Предоставляет средства для создания элементов пользовательского интерфейса только для тех элементов коллекции, которые видимы на экране. Оптимизирует работу с большими коллекциями дочерних элементов.

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

Панель Grid Распределение дочерних элементов по слотам реализуется с помощью присоединенных свойств Row, RowSpan, Column и ColumnSpan, определенных в классе Grid. Свойства Row и Column определяют номер строки и столбца, в которых размещается дочерний элемент (нумерация от 0). Свойства RowSpan и ColumnSpan (тип int) указывают, какое число строк и столбцов может занять дочерний элемент. В панель Grid можно включить один или несколько элементов GridSplitter для изменения размеров столбцов и строк во время выполнения приложения. public sealed class RowDefinitionCollection : IList, ICollection, IEnumerable, IList, ICollection, IEnumerable public sealed class RowDefinitionCollection : IList, ICollection, IEnumerable, IList, ICollection, IEnumerable Размещение в сетке (панели Grid) состоит из определения столбцов и строк сетки; распределения дочерних элементов по слотам сетки. Строки и столбцы сетки описываются классами RowDefinition и ColumnDefinition. Для строк и столбцов сетки класс Grid поддерживает две коллекции, которые доступны через свойства ColumnDefinitions и RowDefinitions.

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

Слот для дочернего элемента панели размещения Концептуально модель размещения состоит в том, что родительский элемент выделяет пространственный слот для дочернего элемента, в котором тот может занять любую часть. Расположение дочернего элемента внутри слота управляется свойствами Margin, HorizontalAlignment и VerticalAlignment, которые унаследованы от класса FrameworkElement. Свойство Margin задает поля – пространство внутри слота, но вне содержимого дочернего элемента. public HorizontalAlignment HorizontalAlignment { get; set; } public VerticalAlignment VerticalAlignment { get; set; } Структура Thickness имеет свойства Left, Top, Bottom, Right типа double. По умолчанию единицей измерения является аппаратно-независимая единица (1/96 дюйма). Можно использовать см (cm), дюймы (in) или пункты (pt), например, public Thickness Margin { get; set; } Перечисление HorizontalAlignment имеет значения Left, Center, Right и Stretch. Перечисление VerticalAlignment имеет значения Top, Center, Bottom и Stretch. Явно заданные значения свойств Height и Width имеют приоритет над Stretch. Свойства HorizontalAlignment и VerticalAlignment определяют выравнивание элемента относительно области, из которой поля уже исключены. Button

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

Панели StackPanel, DockPanel и WrapPanel Панель StackPanel размещает дочерние элементы построчно. Ориентация строки определяется значением свойства public Orientation Orientation { get; set; } Свой размер StackPanel вычисляет на основе максимальных размеров своих дочерних элементов. Суммарный размер дочерних элементов не ограничен, панель может содержать любое число потомков. WrapPanel переносит элементы на другую строку(столбец), когда очередной добавленный элемент достигает границы панели. DockPanel дает возможность размещать дочерние элементы с разных сторон панели. Позиционирование зависит от значения свойства Dock дочернего элемента. Последний элемент может занять все оставшееся свободное пространство внутри панели, если значение свойства LastChildFill равно true. В классе DockPanel определено присоединенное свойство (attached property) Dock и методы для изменения значения этого свойства. public static Dock GetDock( UIElement element ); public static void SetDock( UIElement element, Dock dock ); Перечисление Dock имеет значения Top, Bottom, Left, Right.

Декораторы Классы-декораторы создают визуальные эффекты для одного элемента управления – своего содержимого. UIElement FrameworkElement Decorator Border ButtonChrome Viewbox BulletDecorator public virtual UIElement Child { get; set; } В примере с элементом управления TextBox связан декоратор Border [ContentPropertyAttribute("Child")] public class Decorator : FrameworkElement, IAddChild Декорируемый элемент управления определяется свойством Child.

Декораторы 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.

Expander Элемент управления Expander состоит из заголовка и содержимого (Content), которое пользователь может свернуть или развернуть. Направление, в котором раскрывается окно, можно задать с помощью свойства public ExpandDirection ExpandDirection { get; set; } Перечисление ExpandDirection имеет значения Up, Down, Left, Right. В примере Expander содержит панель Grid c элементами управления TextBox и Button и раскрывается вправо. Apply Элемент Expander не поддерживает автоматическую прокрутку содержимого. Для прокрутки надо включить содержимое в элемент управления ScrollViewer.

Кнопки Button Элемент управления "кнопка" Windows, порождающий при нажатии событие ButtonBase.Click. RepeatButton Кнопка повтора генерирует событие Click с заданным интервалом (свойство Interval) с момента, который зависит от значения свойства Delay, и до момента отпускания. RadioButton Объединенные в группу элементы RadioButton работают как переключатели. Элементы RadioButton, расположенные в одном родительском объекте, образуют группу. Для группировки можно также использовать свойство GroupName (для каждого элемента). CheckBox Переключатель, который может находиться в одном из трех состояний: установлен (true), снят (false) или не определен (null). Информацию о состоянии кнопки содержит свойство public Nullable IsChecked { get; set; }. Для переключения между тремя состояниями значение свойства IsThreeState должно иметь значение true.

Класс ItemsControl Класс ItemsControl является базовым для элементов управления, работающих с коллекцией элементов. public class ItemsControl : Control, IAddChild {…} В классе ItemsControl определены два свойства для работы с коллекцией элементов public IEnumerable ItemsSource {get; set; } public ItemCollection Items { get; } Свойство Items можно использовать для изменения коллекции только в случае, когда свойство ItemsSource имеет значение null. Как только свойству ItemsSource присвоено ненулевое значение, коллекция Items становится доступной только для чтения. Когда свойству ItemsSource присваивается значение null, существующая коллекция удаляется и свойство Items ссылается на пустую коллекцию. Теперь Items можно использовать для изменения коллекции. UIElement FrameworkElement Control ItemsControl MenuBase MenuContextMenu Selector TabControl ComboBox ListBox ListView StatusBar TreeView HeaderedItemsControl MenuItem TreeViewItem ToolBar

Списки и деревья ListBoxЭлемент управления cодержит список элементов для выбора одного или нескольких элементов. ComboBoxЭлемент управления для выбора значения из раскрывающегося списка. ListViewЭлемент управления для отображения списка элементов, который поддерживает несколько режимов отображения, в том числе в виде таблицы. TreeViewЭлемент управления для отображения иерархических данных в виде дерева с элементами, которые можно разворачивать и сворачивать.