Microsoft TechDays Занятие 6 Создание приложений доступа к данным с помощью WPF Роман Здебский rzdebski@microsoft.com

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



Advertisements
Похожие презентации
Microsoft TechDays Роман Здебский Эксперт по технологиям разработки ПО Microsoft
Advertisements

Microsoft TechDays Людмила Шайкина Quarta Consulting
Microsoft TechDays Николай Миляев консультант Microsoft.
Microsoft TechDays Павел Маслов MVP, Directory Services.
Microsoft TechDays Леонид Шапиро MCT ЦКО «Специалист»
Microsoft TechDays Константин Трещев MCITP: Enterprise Administrator
Microsoft TechDays Никоноров Евгений разработчик EPAM Systems.
Microsoft TechDays Евгений Марченков Эксперт по технологиям разработки ПО Microsoft.
Новые продукты Microsoft для повышения качества и эффективности образования Амит Миталь Старший вице-президент Microsoft по развитию социальных проектов.
Microsoft TechDays Марат Бакиров Эксперт по разработке ПО Microsoft
Microsoft TechDayshttp:// Коршиков Андрей Фёдорович ведущий инженер-программист ЗАО «НИПИ «ИнжГео» MCT, MCITP, MCPD.
Microsoft TechDays Заграничнов Александр Microsoft.
Microsoft TechDays Золотовицкий Аркадий Директор по производству «Интеллектуальные системы»
Microsoft TechDays Богомолов Алексей MCP
Microsoft TechDays Ксения Хмелёва Специалист по технологиям Microsoft.
Microsoft TechDays Евгений Марченков Эксперт по технологиям разработки ПО Microsoft.
Microsoft TechDays Виталий Дильмухаметов
Ромуальд Здебский Microsoft.
Microsoft TechDays Панов Никита Технический инженер Microsoft.
Microsoft TechDays Павел Дугаев Руководитель проектов Вебзавод
Транксрипт:

Microsoft TechDayshttp:// Занятие 6 Создание приложений доступа к данным с помощью WPF Роман Здебский Тренинг Введение в разработку приложений на Windows Presentation Foundation

Microsoft TechDayshttp:// 2 Доступ к бизнес данным Визуализация Проверка Разворачивание

Microsoft TechDayshttp:// 3

5 DependencyObject DependencyProperty Resources Data binding Styles Animations Metadata overrides Property value inheritance WPF Designer integration Можно связывать практически все со всем. Свойства элементов управления, ресурсы… и т.п.

Microsoft TechDayshttp:// 6 Бизнес объект DataContext Связывание с бизнес объектом по полю Name Связывание через ElementName

public string Text { get { return (string)GetValue(TextProperty); } set { SetValue(TextProperty, value); } } // Using a DependencyProperty as the backing store for Text. This enables animation, styling, binding, etc... public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(WPFEditBox), new FrameworkPropertyMetadata("Reflections...", new PropertyChangedCallback(OnTextChanged))); propdp - snippet

Microsoft TechDayshttp:// 8

9 4 компонента: 1. source (источник) 2. source path (путь) 3. Целевой dependency object 4. Целевое dependency property Целевое dependency property Путь Целевой dependency object Источник

Microsoft TechDayshttp:// 10 Свойство Path Свойство XPath

Microsoft TechDayshttp:// 11 Удобная возможность связывать объект/коллекцию с иерархической группой элементов управления (в соответствии с визуальным деревом)

Microsoft TechDayshttp:// 12

Microsoft TechDayshttp:// 13 Напрямую из кода (теряем поддержку Blend) Напрямую в XAML подключив namespace Вызывается конструктор по умолчанию xmlns:obj="clr-namespace:WPFApplication1 … grd.DataContext = myCollection;

Microsoft TechDayshttp:// 14 Через ObjectDataProvider / XMLDataProvider Передача параметров в конструктор Привязка к методу (с параметрами) Возможность замены объекта-источника в период выполнения Создание объекта-источника асинхронно Через расширенный провайдер Rockford Lhotkas CSLA.NET framework или собственный Отложенная загрузка Работа с специализированными вебсервисами …

Microsoft TechDayshttp:// 15 Для обновления связанных элементов INotifyPropertyChanged Interface Для обновления удаляемых и добавляемых элементов ObservableCollection (INotifyCollectionChanged) BindingList (IBindingList) Детальный контроль в DataGrid IEditableObject

Microsoft TechDayshttp:// 16 Если ваш объект помечен как Serializable, то Formatter будет пытаться сериализовать все объекты подписанные на event – например Window = exception Josh Smith BindableObject – уменьшение фрагментации managed heap за счет кеширования PropertyChangedEventArgsBindableObject [field: NonSerializedAttribute()] public event ChangedEventHandler Changed;

Microsoft TechDayshttp:// 17 Свойство UpdateSourceTrigger определяет, когда источник будет обновлен: PropertyChanged LostFocus Explicit

Microsoft TechDayshttp:// 18 Свойство Binding – UpdateSourceTrigger По умолчанию – PropertyChanged (для Text- LostFocus) Явный контроль – Explicit, необходимо вручную вызывать – UpdateSource() DataGrid отменяет редактирование при Escape Подтверждает при переходе

Microsoft TechDayshttp:// 19 Поддержка обновлений

Microsoft TechDayshttp:// LINQ + ADO.NET Entity Framework

Microsoft TechDayshttp:// 21 Классы контекста реализуют INotifyPropertyChanged Классы коллекции контекста (EntitySet) не реализуют INotifyCollectionChanged (сознательно) реализует IListSource Необходимо добавлять и удалять данные только через BindingList BindingList emp = (from e in nw.Employees select e) as IListSource).GetList() as BindingList ;

Microsoft TechDayshttp:// 22 Классы контекста реализуют INotifyPropertyChanged Классы коллекции контекста (EntitySet) не реализуют INotifyCollectionChanged (сознательно) реализует IListSource Необходимо добавлять и удалять данные только через IBindingList IBindingList emp = (from e in nw.Employees select e) as IListSource).GetList() as IBindingList;

Microsoft TechDayshttp:// 23 Entity Framework, LINQ to SQL

Microsoft TechDayshttp:// 24 C# 3.0C# 3.0 VB 9.0VB 9.0 ДругиеДругие.NET Language Integrated Query Microsoft SQL Server, Oracle, DB2, MySQL… HTTP Сервер Клиент

Microsoft TechDayshttp:// 25 ADO.NET Data Services пока Не поддерживают INotifyPropertyChanged Не поддерживают IListSource Не используют ObservableCollection / BindingList Но это можно прозрачно реализовать ObservableCollection INotifyPropertyChanged

Microsoft TechDayshttp:// 26

Microsoft TechDayshttp:// 27 Возможность работать с ADO.NET Data Service в offline режиме Кеш в локальный легкий in-process SQL Server Compact (*.sdf файл) Кеш на уровне бизнес сущностей, а не таблиц. Microsoft Sync Framework – «умная» синхронизация Существенное упрощение разработки Smart- Clients с поддержкой offline и высокой производительностью, вне зависимости от качества сетевых подключений.

Microsoft TechDayshttp://

29 Уровень данных? Уровень бизнес-логики? Уровень пользовательского интерфейса?

Microsoft TechDayshttp:// 30 Валидация на уровне бизнес объектов IDataErrorInfo Использование существующей модели валидации {Binding ValidatesOnDataErrors=true} Визуализация по умолчанию

Microsoft TechDayshttp:// 31

Microsoft TechDayshttp:// 32 В случае отдельных диалогов UpdateSourceTrigger = Explicit Для отдельных элементов в рамках общей формы UpdateSourceTrigger = Explicit На уровне всей формы IEditableObject + Custom Collection Сильно упрощается при использовании Entity Framework ADO.NET Data Services Достаточно отменить изменения в DataContext

Microsoft TechDayshttp://

34

Microsoft TechDayshttp:// 35 Возможность декларативно определить способ представления повторяющихся данных в виде шаблона ListBox/ListView, TreeView и др. Сценарии шаблонов Линейные Иерархические

Microsoft TechDayshttp:// 36

Microsoft TechDayshttp:// 37 Value Converters (конверторы значений) Демо: BoolToVisibilityConverter Value Converters в XAML

Microsoft TechDayshttp:// 38 Чтобы конвертировать при связывании нужен IValueConverter:

Microsoft TechDayshttp:// 39

Microsoft TechDayshttp:// 40 Вид, который создается вокруг коллекций автоматически при DataBinding Может создаваться явно Реализует ICollectionView Контролирует текущую позицию Сортировка Фильтрация Группировка

Microsoft TechDayshttp:// 41

Microsoft TechDayshttp://

43 WPF Client Profile – 28 MB Common Language Runtime (CLR) ClickOnce Windows Forms Windows Presentation Foundation Windows Communication Foundation

Microsoft TechDayshttp:// 44 Автоматическая установка по ссылке в интрасети или интернет Автоматическое конфигурируемое обновление Нет необходимости в административных правах Легкость настройки

Microsoft TechDayshttp:// 45

Microsoft TechDayshttp:// 46

Microsoft TechDayshttp:// 47 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.