Михаил Черномордиков Developer Evangelist, Microsoft Россия mikcher@microsoft.com http://blogs.msdn.com/mikcher http://www.remix.ru.

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



Advertisements
Похожие презентации
Михаил Черномордиков Developer Evangelist, Microsoft Россия
Advertisements

Microsoft TechDays Александр Шер Разработчик ООО «Айко»
Михаил Черномордиков Developer Evangelist, Microsoft Россия
Ресурсы WPF Два типа ресурсов WPF: объектные ресурсы (object resource) – определенный.NET-объект, который можно использовать многократно; ресурсы сборки.
Михаил Черномордиков Developer Evangelist, Microsoft Россия
Михаил Черномордиков Developer Evangelist, Microsoft Россия
Windows Runtime: Создание новых элементов управления СЕРГЕЙ БАЙДАЧНЫЙ СПЕЦИАЛИСТ ПО РАЗРАБОТКЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Microsoft TechDays Роман Здебский Эксперт по технологиям разработки ПО Microsoft.
Михаил Черномордиков Developer Evangelist, Microsoft Россия
Классы Windows Presentation Foundation System.Object DispatcherObject ApplicationDependencyObject Visual UIElement FrameworkElement Page Shape TextBlock.
Microsoft TechDays Александр Шер Разработчик ООО «Айко»
Автоматизация сборки и модификации разнородной компьютерной документации: разработка графического интерфейса приложения и формата файлов проекта. Исполнитель:
Исполнитель: Утяшева И.А. Научный руководитель: к.ф.-м.н. Винокур В.В.
Веб-технологии и современные средства разработки УЦ ВГТУ & SoftLine Academy.
Разработка интерактивных приложений – Windows Presentation Foundation и Silverlight Р.Б. Здебский, М.В. Черномордиков Эксперты по технологиям разработки.
Создание базы данных с помощью Конструктора Создание базы данных без помощи Мастера Теперь попробуем создать базу данных без помощи Мастера. При запуске.
Платформа разработки ASP.NET Гайдар Магдануров t: e: m: +7.
Визуализация и моделирование с использованием UML в Visual Studio 2010 Ultimate Евгений Чигиринский Microsoft.
Основы объектно-ориентированного программирования (ООП)
Язык разметки гипертекста HTML Занятие 1 © Николаева Вера Александровна,
Транксрипт:

Михаил Черномордиков Developer Evangelist, Microsoft Россия

Модель элементов управления

Использование UserControl

UserControl Сценарии Фиксированный внешний вид с одной и той же логикой Разделение больших страниц на мелкие части Повторное использование разметки и логики Поддержка платформы … public partial class MyControl : UserControl {} XAML необязателен

UserControl «Страница» в Silverlight является UserControl Визуальные элементы Связывание данных События клавиатуры и мыши … и многое другое

User Controls Custom Controls 1.Декомпозиция приложения 2.Повторное использование 1. Разделение на модули 2. Дизайнер может менять внешний вид

Custom Controls Сценарии Четкое разделение между логикой и представлением Возможность изменять визуальное представление без влияния на программную логику Поддержка платформы Включен большой набор custom controls Созданы возможности для создания новых custom controls

Styling

Styling Ресурсы Общий XAML-файл, на который могут ссылаться различные элементы вашего приложения Набор свойств, который могут быть применимы к элементам управления, тексту, формам и т.д. Silverlight 2 Write once поведение Темы приложений пока не поддерживаются BasedOn-стили пока не поддерживаются

Skinning

Skinning Набор элементов, создающих визуальную структуру элемента управления {TemplateBinding} Связывание между визуальным шаблоном и визуальными свойствами элемента управления

Styling и Skinning Простая форма

Внешний вид по умолчанию generic.xaml Ресурс проекта в DLL-файле элемента управления Содержит ресурсный словарь с встроенными стилями DefaultStyleKey Значение – тип элемента управления Указывает на generic.xaml и конкретный стиль в нем Можно указать субкласс для изменения внешнего вида по умолчанию Стиль по умолчанию НЕ влияет на свойство Style элемента управления

Определение контракта Мне нужен бегунок, нажатое состояние… Пытаюсь понять, что мне нужно поместить в шаблон… Сделаем тебе бегунок, нажатое состояние…

Введение в модель частей и состояний Цели Определение структуры элемента управления Явное разделение логики и представления Явный контракт элемента управления Рекомендации НЕ делать определения в runtime Есть поддержка в Blend

Части Именованные элементы шаблона Код взаимодействует с этими элементами каким-либо образом

Состояния Визуальное представление элемента в конкретном состоянии MouseOver Pressed

Переходы Визуальное представление элемента во время перехода между состояниями MouseOverPressed

Группы состояний Группа непересекающихся состояний Различные группы ортогональны друг другу Поддержка в Expression Blend

Пример состояний - CheckBox CommonStates Normal Mouseover Pressed Disabled CheckStates Unchecked Checked Indeterminate

VisualStateManager VisualStateManager VisualStateGroups

Использование состояний VisualState class Содержит storyboard с определением представления Может быть статичной или постепенной анимацией VisualStateGroup class Коллекция непересекающихся объектов класса VisualState

Использование переходов VisualTransition class Как выглядит элемент управления во время перехода между состояниями Содержит длительность автоматической анимации переходов

Типы VisualTransition Типы переходов: (MouseOver -> Pressed) From/To To From Default Выбирается наиболее специфичный тип

VisualStateManager VisualStateManager GoToState() VisualStateGroups

Создание логики элемента управления Метаданные контракта элемента управления [TemplatePart] для определения конкретной части [TemplateVisualState] для определения конкретного состояния НЕ используется в runtime. Используется инструментами – Visual Studio, Expression Studio

VisualStateManager.GoToState(control, stateName, useTransitions) Управляет логикой изменения состояний Возвращает true, если состояние было найдено Выбирает наиболее подходящий переход VisualTransition Генерирует автоматические переходы Создание логики элемента управления

Visual State Manager Изменение вида стандартного элемента

public override void OnApplyTemplate() Вызывается, когда новый шаблон был применен Должен найти все Части Должен инициализировать изменения состояний без переходов FrameworkElement GetTemplateChild() Возвращает именованный элемент внутри шаблона Создание логики элемента управления

Что получаем в итоге? UserControls Custom Controls Styles & Templates ContentControls VisualStateManager

Михаил Черномордиков Developer Evangelist, Microsoft Россия