Microsoft TechDays Роман Здебский Эксперт по технологиям разработки ПО Microsoft rzdebski@microsoft.com

Содержание

Слайд 2

Создание приложений доступа к данным с помощью WPF

Роман Здебский
Эксперт по технологиям разработки

Создание приложений доступа к данным с помощью WPF Роман Здебский Эксперт по
ПО
Microsoft
rzdebski@microsoft.com
http://blogs.msdn.com/roman

Слайд 3

Продолжение преследует

Продолжение преследует

Слайд 4

Бизнес-приложения на WPF

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

Бизнес-приложения на WPF Доступ к бизнес данным Визуализация Проверка Разворачивание

Слайд 5

Связывание с данными DataBinding

Связывание с данными DataBinding

Слайд 6

DataBinding в WPF - Основа Framework

DependencyObject
DependencyProperty
Resources
Data binding
Styles
Animations
Metadata overrides

DataBinding в WPF - Основа Framework DependencyObject DependencyProperty Resources Data binding Styles

Property value inheritance
WPF Designer integration

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

Слайд 7

DependencyProperty

public string Text
{
get { return (string)GetValue(TextProperty); }
set {

DependencyProperty 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

Слайд 8

DataBinding в WPF и DependencyProperty

Демонстрация

DataBinding в WPF и DependencyProperty Демонстрация

Слайд 9

DataContext – рай для MasterDetail

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

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

Слайд 10

Что использовать для бизнес объектов?

Унаследоваться от DependencyObject?
Для работы DataBinding Target должен быть

Что использовать для бизнес объектов? Унаследоваться от DependencyObject? Для работы DataBinding Target
только DependencyObject
Source может быть CLR Object или XML

Слайд 11

Как можно связать бизнес объекты с UI?

Напрямую из кода (теряем поддержку Blend)
Напрямую

Как можно связать бизнес объекты с UI? Напрямую из кода (теряем поддержку
в XAML подключив namespace
Вызывается конструктор по умолчанию

xmlns:obj="clr-namespace:WPFApplication1”




grd.DataContext = myCollection;

Слайд 12

Как можно связать бизнес объекты с UI?
Через ObjectDataProvider / XMLDataProvider
Передача параметров в

Как можно связать бизнес объекты с UI? Через ObjectDataProvider / XMLDataProvider Передача
конструктор
Привязка к методу (с параметрами)
Возможность замены объекта-источника в период выполнения
Создание объекта-источника асинхронно
Через расширенный провайдер Rockford Lhotka’s CSLA .NET framework или собственный
Отложенная загрузка
Работа с специализированными вебсервисами

Слайд 13

Что нужно для поддержки редактирования?
Для обновления связанных элементов
INotifyPropertyChanged Interface
Для обновления удаляемых и

Что нужно для поддержки редактирования? Для обновления связанных элементов INotifyPropertyChanged Interface Для
добавляемых элементов
ObservableCollection (INotifyCollectionChanged)
BindingList (IBindingList)
Детальный контроль в DataGrid
IEditableObject

Слайд 14

Помните про сериализацию и оптимизацию
Если ваш объект помечен как Serializable, то Formatter

Помните про сериализацию и оптимизацию Если ваш объект помечен как Serializable, то
будет пытаться сериализовать все объекты подписанные на event – например Window ☺ = exception
Josh Smith BindableObject – уменьшение фрагментации managed heap за счет кеширования PropertyChangedEventArgs

[field: NonSerializedAttribute()]
public event ChangedEventHandler Changed;

Слайд 15

Отмена/подтверждение редактирования
Свойство Binding – UpdateSourceTrigger
По умолчанию – PropertyChanged (для Text- LostFocus)
Явный контроль

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

Слайд 16

Связывание простого объекта

Демонстрация

Поддержка обновлений

Связывание простого объекта Демонстрация Поддержка обновлений

Слайд 17

Работа с современными источниками данных

LINQ + ADO.NET Entity Framework

Работа с современными источниками данных LINQ + ADO.NET Entity Framework

Слайд 18

LINQ to SQL

Классы контекста
реализуют INotifyPropertyChanged ☺
Классы коллекции контекста (EntitySet)
не реализуют INotifyCollectionChanged

LINQ to SQL Классы контекста реализуют INotifyPropertyChanged ☺ Классы коллекции контекста (EntitySet)
(сознательно)
реализует IListSource ☺
Необходимо добавлять и удалять данные только через BindingList

BindingList emp =
(from e in nw.Employees select e) as IListSource).GetList() as BindingList;

Слайд 19

Entity Framework

Классы контекста
реализуют INotifyPropertyChanged ☺
Классы коллекции контекста (EntitySet)
не реализуют INotifyCollectionChanged (сознательно)
реализует

Entity Framework Классы контекста реализуют INotifyPropertyChanged ☺ Классы коллекции контекста (EntitySet) не
IListSource ☺
Необходимо добавлять и удалять данные только через IBindingList

IBindingList emp =
(from e in nw.Employees select e) as IListSource).GetList() as IBindingList;

Слайд 20

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

Демонстрация

Entity Framework, LINQ to SQL

Использование ORM Демонстрация Entity Framework, LINQ to SQL

Слайд 21

ADO.NET Data Services

.NET Language Integrated Query

Entity Framework

ADO.NET

REST API

LINQ DS
Provider

HTTP

Сервер
Клиент

ADO.NET DS
Data Context

ADO.NET Data Services .NET Language Integrated Query Entity Framework ADO.NET REST API

Слайд 22

Работа в многоуровневом сценарии
ADO.NET Data Services 1.0
Не поддерживают INotifyPropertyChanged
Не поддерживают IListSource
Не используют

Работа в многоуровневом сценарии ADO.NET Data Services 1.0 Не поддерживают INotifyPropertyChanged Не
ObservableCollection / BindingList
Но это можно прозрачно реализовать
ObservableCollection
INotifyPropertyChanged

Слайд 23

Работа в многоуровневом сценарии
ADO.NET Data Services 1.5 CTP
Поддерживают INotifyPropertyChanged
Поддерживают INotifyCollectionChanged
Вызывайте метод

Работа в многоуровневом сценарии ADO.NET Data Services 1.5 CTP Поддерживают INotifyPropertyChanged Поддерживают

ToObservableEntityCollection

Слайд 24

ADO.NET Data Services

Демонстрация

ADO.NET Data Services Демонстрация

Слайд 25

ADO.NET Data Services Offline

Возможность работать с ADO.NET Data Service в offline режиме
Кеш

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

Слайд 26

Проверка данных Validation

Проверка данных Validation

Слайд 27

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

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

Слайд 28

IDataErrorInfo – валидация на уровне бизнес правил.
Валидация на уровне бизнес объектов
IDataErrorInfo
Использование существующей

IDataErrorInfo – валидация на уровне бизнес правил. Валидация на уровне бизнес объектов
модели валидации
{Binding ValidatesOnDataErrors=true}
Визуализация по умолчанию

Слайд 29

Проверка правильности данных

Демонстрация

Проверка правильности данных Демонстрация

Слайд 30

Поддержка кнопки Cancel

В случае отдельных диалогов
UpdateSourceTrigger = Explicit
Для отдельных элементов в рамках

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

Слайд 31

Визуализация данных

Визуализация данных

Слайд 32

Используйте новые контролы
Релиз! DataGrid, DatePicker, Calendar - поставляется вместе с исходным кодом

Используйте новые контролы Релиз! DataGrid, DatePicker, Calendar - поставляется вместе с исходным
в рамках WPF Toolkit на www.codeplex.com
DataGrid - возможности:
Авто-генерирование колонок
Различные типы: Text, CheckBox, ComboBox, Button, Hyperlink + TemplateColumn
Редактирование
Фильтры и группировки
Item Container Recycling
Deferred Scrolling

Слайд 33

Data Templates

Возможность декларативно определить способ представления повторяющихся данных в виде шаблона
ListBox/ListView, TreeView

Data Templates Возможность декларативно определить способ представления повторяющихся данных в виде шаблона
и др.
Сценарии шаблонов
Линейные
Иерархические







?

Слайд 34

DataTemplates

Демонстрация

DataTemplates Демонстрация

Слайд 35

CollectionViews

Вид, который создается вокруг коллекций автоматически при DataBinding
Может создаваться явно
Реализует ICollectionView
Контролирует

CollectionViews Вид, который создается вокруг коллекций автоматически при DataBinding Может создаваться явно
текущую позицию
Сортировка
Фильтрация
Группировка

Слайд 36

CollectionViews

Демонстрация

CollectionViews Демонстрация

Слайд 37

Разворачивание Deployment

Разворачивание Deployment

Слайд 38

Разворачивание

WPF Client Profile – 28 MB
Common Language Runtime (CLR)
ClickOnce
Windows Forms

Разворачивание WPF Client Profile – 28 MB Common Language Runtime (CLR) ClickOnce

Windows Presentation Foundation
Windows Communication Foundation

Слайд 39

ClickOnce

Автоматическая установка по ссылке в интрасети или интернет
Автоматическое конфигурируемое обновление
Нет необходимости
в

ClickOnce Автоматическая установка по ссылке в интрасети или интернет Автоматическое конфигурируемое обновление
административных
правах
Легкость
настройки

Слайд 40

ClickOnce

Демонстрация

ClickOnce Демонстрация

Слайд 41

Распространение .NET 3.x

Vista & Win7
Windows Update
Улучшения в разворачивании

%

% ПК в США

Распространение .NET 3.x Vista & Win7 Windows Update Улучшения в разворачивании %
с .NET Framework 3.0 и выше

Слайд 42

.NET Framework 4.0 и Visual Studio 2010

Улучшение основ
Повышение четкости текстов
Развертывание
Улучшение Interop
Улучшение Accessibility

.NET Framework 4.0 и Visual Studio 2010 Улучшение основ Повышение четкости текстов
& локализации
Производительность

Графика и UI
Multi-touch
DataGrid
Ribbon
Superbar
Common Dialogs
Effects
Animation
Media Enhancements
(h.264 on Win7)

Инструменты
RAD LOB Designer
Улучшения XAML Designer
Улучшение взаимодействия Developer/Designer
Visual State Manager
Еще многое…

Слайд 43

Visual Studio 2010 WPF Designer

Visual Studio 2010 WPF Designer

Слайд 44

Windows 7 – платформа для Ваших WPF приложений
Прозрачная поддержка Touch всеми элементами

Windows 7 – платформа для Ваших WPF приложений Прозрачная поддержка Touch всеми
управления WPF
Поддержка TaskBar (TaskLists, и т.п.)
Улучшения рендеринга текста с помощью DirectWrite
Использование h.264, divx
Ribbon

Слайд 45

PhotoSuru 2

Демонстрация

PhotoSuru 2 Демонстрация

Слайд 46

О чем мы поговорили

Связывание с данными в WPF
Выбор способа связывания
Возможности master/detail сценариев
Возможности

О чем мы поговорили Связывание с данными в WPF Выбор способа связывания
визуализации данных
Разворачивание
Ближайшее будущее

Слайд 47

Ресурсы

WindowsClient.net/WPF
CodePlex.com/WPF
http://msdn.microsoft.com/en-us/netframework/aa663326.aspx

Ресурсы WindowsClient.net/WPF CodePlex.com/WPF http://msdn.microsoft.com/en-us/netframework/aa663326.aspx

Слайд 48

Спасибо
за внимание!

Спасибо за внимание!

Слайд 49

© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and

© 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.
Имя файла: Microsoft-TechDays-Роман-Здебский-Эксперт-по-технологиям-разработки-ПО-Microsoft-rzdebski@microsoft.com.pptx
Количество просмотров: 128
Количество скачиваний: 0