Microsoft TechDays Александр Шер Разработчик ООО «Айко»

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



Advertisements
Похожие презентации
Microsoft TechDays Александр Шер Разработчик ООО «Айко»
Advertisements

Программирование на C# 4 и.NET 4 Лекция 15. WPF. Шаблон элемента управления Элементы управления WPF спроектированы таким образом, чтобы полностью отделить.
Классы Windows Presentation Foundation System.Object DispatcherObject ApplicationDependencyObject Visual UIElement FrameworkElement Page Shape TextBlock.
Михаил Черномордиков Developer Evangelist, Microsoft Россия
Microsoft TechDays Роман Здебский Эксперт по технологиям разработки ПО Microsoft.
Михаил Черномордиков Developer Evangelist, Microsoft Россия
Ресурсы WPF Два типа ресурсов WPF: объектные ресурсы (object resource) – определенный.NET-объект, который можно использовать многократно; ресурсы сборки.
Dependency Property Расширение разметки (Markup Extensions) Привязки (binding) Лекция 13.
Microsoft TechDays Порубов Александр Независимый Silverlight-разработчик, Microsoft MVP Silverlighter.ru, Porubov.com.
Ресурсы. Стили. Анимация. Лекция 15. Ресурсы Стили Анимация.
Лекция 6. Способы адресации в микропроцессорных системах.
Алгоритмический подход – главное алгоритм решения задачи ( в основном, используется для вычислительных задач ); Структурное программирование – декомпозиция,
ASP Page Data Binding by Dmitry Pavlov. ASP Page Data Binding Data Binding – механизм для связывания данных с элементами управления, которые эти данные.
Методология IDEF1X (IDEF1 Extended) – язык для семантического моделирования данных, основанных на концепции « сущность - связь ». Является расширением.
Microsoft Excel 2003 Irina Kisseljova Темы Графики и диаграммы.
Основы объектно-ориентированного программирования (ООП)
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Модуль 7 Разработка и создание форм. Общие сведения Формы. Основные понятия. Создание форм с помощью мастера. Использование выражений в формах. Работа.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Докладчик: Бульёнов А. В., аспирант Научный руководитель: Шалыто А. А., д. т. н., профессор, зав. кафедрой КТ Методы автоматного программирования в разработке.
Транксрипт:

Microsoft TechDayshttp:// Александр Шер Разработчик ООО «Айко»

Microsoft TechDayshttp:// Styles Templates Взаимодействие CustomControl с темплейтом Templates VS UserControls

Microsoft TechDayshttp:// Стиль – это набор ресурсов, значений свойств, обработчиков событий и триггеров С помощью стилей можно менять значения любого не-ReadOnly DependencyProperty Можно задать базовый тип контрола, к которому он применяем Тип проверяется на этапе компиляции Тип должен быть классом Тип можно указать для отдельного свойста На этапе исполнения имеет значение только свойство

Microsoft TechDayshttp:// Стиль, добавленный в Resources без ключа, применяется ко всем контролам типа, заданного в TargetType Ключом неявно становится тип из TargetType Стиль, добавленный без ключа в Resources дочернего контрола, перекрывает стиль в родителе Наследование не происходит, если не указать явно Стиль не применяется к экземплярам потомков

Microsoft TechDayshttp:// Механизм наследования стилей позволяет переопределять значения свойств и добалять триггеры и обработчики событий Стили можно наследовать от неявно заданных Стиль-предок определяется контекстом Стиль-потомок может иметь такие-же или более жесткие требования относительно типа контрола Но не может более мягкие – проверяется на этапе компиляции

Microsoft TechDayshttp:// Неявно применяемый стиль из словаря Базовый стиль Неявно применяемый в дочернем контроле стиль Неявно применяемый стиль Неявно применяемый в потомке стиль с указанием наследования Явно приминяемый стиль – наследник Явно приминяемый стиль Явно применяемый стиль с нестрогой типизацией

Microsoft TechDayshttp:// ControlTemplate Предназначен для определения внешнего вида контрола Позволяет указывать тип контрола Binding.Source – DataContext контрола DataTemplate Предназначен для определения вида контента Позволяет указывать тип контента для неявного выбора темплейта Binding.Source – Content ItemsPanelTemplate Предназначен для указания панели в ItemsControl

Microsoft TechDayshttp:// Binding Source – ресурс или статическое поле RelativeSource – ссылка на контрол, к которому применяется темплейт родительский контрол указанного типа, предыдущий dataItem себя ElementName – ссылка на элемент по имени MultiBinding Получение данных из нескольких источников и обработка с помощью конвертера PriorityBinding Используется первый «сработавший» биндинг

Microsoft TechDayshttp:// Селекторы применяются в случаях, когда требуется полностью изменить темплейт в зависимости от каких-либо условий Предпосылки к исползованию Сложная логика выбора темплейта Повторное использование Иногда использование триггеров оказывается удобнее селекторов Если определен DataTemplate, то DataTemplateSelector игнорируется

Microsoft TechDayshttp:// Темплейты не поддерживают наследование (очевидно :-) Темплейты можно вкладывать друг в друга, применяя одни темплейты внутри других Для вложенного ControlTemplate должен удовлетворять TargetType

Microsoft TechDayshttp:// С помощью именованных частей Ссылки на части должны обновляться каждый раз при смене темплейта Контрол должен работать, даже если какие-то из частей не найдены! С помощью механизма RoutedCommands Команда может прийти от контрола вне темплейта Команда может быть пораждена нажатием комбинации клавиш

Microsoft TechDayshttp:// Минимизируйте контракт! Не опирайтесь на взаимное расположение контролов Используйте DependencyProperty, помогающие определять состояние контрола ( CheckBox.IsChecked ) Используйте Attached Properties, чтобы дать возможность изменять поведение контрола без изменения темплейта родителя ( ScrollViewer.CanContentScroll )

Microsoft TechDayshttp:// CustomControl + Template +Логика отделена от представления +Представление полностью кастумизируется +Покрытие логики юнит-тестами Сложнее в разработке Требуется обработка смены темплейта UserControl +Доступ к обработчикам событий из XAML +Простая реализация +Content по-прежнему можно кастумизировать Не позволяет кастумизировать сам контрол Создание иерархии контролов затруднительно Для тестирования требуются AutomationPeers

Microsoft TechDayshttp:// Выносите все повторяющиеся «настройки» в стили Не прописывайте в ControlTemplate значения свойств, которые могут быть получены из стиля Пропишите в ControlTemplate ссылку на свойство через TemplateBinding Заведите стиль и задайте значение для свойства через сеттер Используйте триггеры стилей для изменения свойств контрола Используйте триггеры темплейтов для изменения частей темплейта

Microsoft TechDayshttp:// Раздел, посвященный WPF в MSDN: WPF на CodePlex: Собрание блоггеров (Dr. WPF, John Smith, Beatriz Costa, etc.):

Microsoft TechDayshttp://