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

Содержание

Слайд 2Создание приложений доступа к данным с помощью WPF
Роман Здебский
Эксперт по технологиям

разработки ПО
Microsoft
rzdebski@microsoft.com
http://blogs.msdn.com/roman

Слайд 3Продолжение преследует


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


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


Слайд 6DataBinding в WPF - Основа Framework
DependencyObject
DependencyProperty
Resources
Data binding
Styles
Animations
Metadata

overrides
Property value inheritance
WPF Designer integration

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


Слайд 7DependencyProperty
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


Слайд 8DataBinding в WPF и DependencyProperty
Демонстрация


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

элементов управления (в соответствии с визуальным деревом)

Слайд 10Что использовать для бизнес объектов?
Унаследоваться от DependencyObject?
Для работы DataBinding Target должен

быть только DependencyObject
Source может быть CLR Object или XML

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

Blend)

Напрямую в XAML подключив namespace




Вызывается конструктор по умолчанию

xmlns:obj="clr-namespace:WPFApplication1”




grd.DataContext = myCollection;


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

Через ObjectDataProvider / XMLDataProvider
Передача параметров

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


Слайд 13Что нужно для поддержки редактирования?

Для обновления связанных элементов
INotifyPropertyChanged Interface
Для обновления удаляемых

и добавляемых элементов
ObservableCollection (INotifyCollectionChanged)
BindingList (IBindingList)
Детальный контроль в DataGrid
IEditableObject

Слайд 14Помните про сериализацию и оптимизацию

Если ваш объект помечен как Serializable, то

Formatter будет пытаться сериализовать все объекты подписанные на event – например Window ☺ = exception


Josh Smith BindableObject – уменьшение фрагментации managed heap за счет кеширования PropertyChangedEventArgs

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


Слайд 15Отмена/подтверждение редактирования

Свойство Binding – UpdateSourceTrigger
По умолчанию – PropertyChanged (для Text- LostFocus)
Явный

контроль – Explicit, необходимо вручную вызывать – UpdateSource()
DataGrid
отменяет редактирование при Escape
Подтверждает при переходе


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


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


Слайд 18LINQ to SQL
Классы контекста
реализуют INotifyPropertyChanged ☺
Классы коллекции контекста (EntitySet)
не реализуют

INotifyCollectionChanged (сознательно)
реализует IListSource ☺



Необходимо добавлять и удалять данные только через BindingList


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


Слайд 19Entity Framework
Классы контекста
реализуют INotifyPropertyChanged ☺
Классы коллекции контекста (EntitySet)
не реализуют INotifyCollectionChanged

(сознательно)
реализует IListSource ☺



Необходимо добавлять и удалять данные только через IBindingList


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


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


Слайд 21ADO.NET Data Services
.NET Language Integrated Query
Entity Framework
ADO.NET
REST API

LINQ DS
Provider
HTTP

Сервер






Клиент
ADO.NET DS
Data Context


Слайд 22Работа в многоуровневом сценарии

ADO.NET Data Services 1.0
Не поддерживают INotifyPropertyChanged
Не поддерживают IListSource
Не

используют ObservableCollection / BindingList
Но это можно прозрачно реализовать
ObservableCollection
INotifyPropertyChanged

Слайд 23Работа в многоуровневом сценарии

ADO.NET Data Services 1.5 CTP
Поддерживают INotifyPropertyChanged
Поддерживают INotifyCollectionChanged
Вызывайте

метод –
ToObservableEntityCollection

Слайд 24ADO.NET Data Services
Демонстрация


Слайд 25ADO.NET Data Services Offline
Возможность работать с ADO.NET Data Service в offline

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

Слайд 26Проверка данных Validation


Слайд 27Где должна происходить проверка?

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


Слайд 28IDataErrorInfo – валидация на уровне бизнес правил.

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

существующей модели валидации
{Binding ValidatesOnDataErrors=true}
Визуализация по умолчанию


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


Слайд 30Поддержка кнопки Cancel
В случае отдельных диалогов
UpdateSourceTrigger = Explicit
Для отдельных элементов в

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


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


Слайд 32Используйте новые контролы

Релиз! DataGrid, DatePicker, Calendar - поставляется вместе с исходным

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

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

TreeView и др.
Сценарии шаблонов
Линейные
Иерархические









?


Слайд 34DataTemplates
Демонстрация


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


Контролирует текущую позицию
Сортировка
Фильтрация
Группировка

Слайд 36CollectionViews
Демонстрация


Слайд 37Разворачивание Deployment


Слайд 38Разворачивание
WPF Client Profile – 28 MB
Common Language Runtime (CLR)
ClickOnce
Windows

Forms
Windows Presentation Foundation
Windows Communication Foundation

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


в административных
правах
Легкость
настройки

Слайд 40ClickOnce
Демонстрация


Слайд 41Распространение .NET 3.x
Vista & Win7

Windows Update

Улучшения в разворачивании

%
% ПК в

США с .NET Framework 3.0 и выше

Слайд 42.NET Framework 4.0 и Visual Studio 2010
Улучшение основ

Повышение четкости текстов

Развертывание

Улучшение Interop

Улучшение

Accessibility & локализации

Производительность



Графика и 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

Еще многое…


Слайд 43Visual Studio 2010 WPF Designer


Слайд 44Windows 7 – платформа для Ваших WPF приложений

Прозрачная поддержка Touch всеми

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

Слайд 45PhotoSuru 2
Демонстрация


Слайд 46О чем мы поговорили
Связывание с данными в WPF
Выбор способа связывания
Возможности master/detail

сценариев
Возможности визуализации данных
Разворачивание
Ближайшее будущее

Слайд 47Ресурсы
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 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.

Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика