Microsoft TechDayshttp:// Роман Здебский Эксперт по технологиям разработки ПО Microsoft
Microsoft TechDayshttp://
Доступ к бизнес данным Визуализация Проверка Разворачивание
Microsoft TechDayshttp://
DependencyObject DependencyProperty Resources Data binding Styles Animations Metadata overrides Property value inheritance WPF Designer integration Можно связывать практически все со всем. Свойства элементов управления, ресурсы… и т.п.
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://
Удобная возможность связывать объект/коллекцию с иерархической группой элементов управления (в соответствии с визуальным деревом)
Microsoft TechDayshttp://
Напрямую из кода (теряем поддержку Blend) Напрямую в XAML подключив namespace Вызывается конструктор по умолчанию xmlns:obj="clr-namespace:WPFApplication1 … grd.DataContext = myCollection;
Microsoft TechDayshttp:// Через ObjectDataProvider / XMLDataProvider Передача параметров в конструктор Привязка к методу (с параметрами) Возможность замены объекта-источника в период выполнения Создание объекта-источника асинхронно Через расширенный провайдер Rockford Lhotkas CSLA.NET framework или собственный Отложенная загрузка Работа с специализированными вебсервисами …
Microsoft TechDayshttp:// Для обновления связанных элементов INotifyPropertyChanged Interface Для обновления удаляемых и добавляемых элементов ObservableCollection (INotifyCollectionChanged) BindingList (IBindingList) Детальный контроль в DataGrid IEditableObject
Microsoft TechDayshttp:// Если ваш объект помечен как Serializable, то Formatter будет пытаться сериализовать все объекты подписанные на event – например Window = exception Josh Smith BindableObject – уменьшение фрагментации managed heap за счет кеширования PropertyChangedEventArgsBindableObject [field: NonSerializedAttribute()] public event ChangedEventHandler Changed;
Microsoft TechDayshttp:// Свойство Binding – UpdateSourceTrigger По умолчанию – PropertyChanged (для Text- LostFocus) Явный контроль – Explicit, необходимо вручную вызывать – UpdateSource() DataGrid отменяет редактирование при Escape Подтверждает при переходе
Microsoft TechDayshttp:// Поддержка обновлений
Microsoft TechDayshttp:// LINQ + ADO.NET Entity Framework
Microsoft TechDayshttp:// Классы контекста реализуют INotifyPropertyChanged Классы коллекции контекста (EntitySet) не реализуют INotifyCollectionChanged (сознательно) реализует IListSource Необходимо добавлять и удалять данные только через BindingList BindingList emp = (from e in nw.Employees select e) as IListSource).GetList() as BindingList ;
Microsoft TechDayshttp:// Классы контекста реализуют INotifyPropertyChanged Классы коллекции контекста (EntitySet) не реализуют INotifyCollectionChanged (сознательно) реализует IListSource Необходимо добавлять и удалять данные только через IBindingList IBindingList emp = (from e in nw.Employees select e) as IListSource).GetList() as IBindingList;
Microsoft TechDayshttp:// Entity Framework, LINQ to SQL
Microsoft TechDayshttp:// C# 3.0C# 3.0 VB 9.0VB 9.0 ДругиеДругие.NET Language Integrated Query Microsoft SQL Server, Oracle, DB2, MySQL… HTTP Сервер Клиент
Microsoft TechDayshttp:// ADO.NET Data Services 1.0 Не поддерживают INotifyPropertyChanged Не поддерживают IListSource Не используют ObservableCollection / BindingList Но это можно прозрачно реализовать ObservableCollection INotifyPropertyChanged
Microsoft TechDayshttp:// ADO.NET Data Services 1.5 CTP Поддерживают INotifyPropertyChanged Поддерживают INotifyCollectionChanged Вызывайте метод – ToObservableEntityCollection
Microsoft TechDayshttp://
Возможность работать с ADO.NET Data Service в offline режиме Кеш в локальный легкий in-process SQL Server Compact (*.sdf файл) Кеш на уровне бизнес сущностей, а не таблиц. Microsoft Sync Framework – «умная» синхронизация Существенное упрощение разработки Smart- Clients с поддержкой offline и высокой производительностью, вне зависимости от качества сетевых подключений.
Microsoft TechDayshttp://
Уровень данных? Уровень бизнес-логики? Уровень пользовательского интерфейса?
Microsoft TechDayshttp:// Валидация на уровне бизнес объектов IDataErrorInfo Использование существующей модели валидации {Binding ValidatesOnDataErrors=true} Визуализация по умолчанию
Microsoft TechDayshttp://
В случае отдельных диалогов UpdateSourceTrigger = Explicit Для отдельных элементов в рамках общей формы UpdateSourceTrigger = Explicit На уровне всей формы IEditableObject + Custom Collection Сильно упрощается при использовании Entity Framework ADO.NET Data Services Достаточно отменить изменения в DataContext
Microsoft TechDayshttp://
Возможность декларативно определить способ представления повторяющихся данных в виде шаблона ListBox/ListView, TreeView и др. Сценарии шаблонов Линейные Иерархические
Microsoft TechDayshttp://
Вид, который создается вокруг коллекций автоматически при DataBinding Может создаваться явно Реализует ICollectionView Контролирует текущую позицию Сортировка Фильтрация Группировка
Microsoft TechDayshttp://
WPF Client Profile – 28 MB Common Language Runtime (CLR) ClickOnce Windows Forms Windows Presentation Foundation Windows Communication Foundation
Microsoft TechDayshttp:// Автоматическая установка по ссылке в интрасети или интернет Автоматическое конфигурируемое обновление Нет необходимости в административных правах Легкость настройки
Microsoft TechDayshttp://
Vista & Win7 Windows Update Улучшения в разворачива нии Vista & Win7 Windows Update Улучшения в разворачива нии % % ПК в США с.NET Framework 3.0 и выше
Microsoft TechDayshttp:// Улучшение основ Повышение четкости текстов Развертывание Улучшение Interop Улучшение Accessibility & локализации Производительнос ть Улучшение основ Повышение четкости текстов Развертывание Улучшение Interop Улучшение Accessibility & локализации Производительнос ть Графика и UI Multi-touch DataGrid Ribbon Superbar Common Dialogs Effects Animation Media Enhancements (h.264 on Win7 ) Графика и UI Multi-touch DataGrid Ribbon Superbar Common Dialogs Effects Animation Media Enhancements (h.264 on Win7 ) Инструменты RAD LOB Designer Улучшения XAML Designer Улучшение взаимодействия Developer/Design er Visual State Manager Еще многое… Инструменты RAD LOB Designer Улучшения XAML Designer Улучшение взаимодействия Developer/Design er Visual State Manager Еще многое…
Microsoft TechDayshttp://
Прозрачная поддержка Touch всеми элементами управления WPF Поддержка TaskBar (TaskLists, и т.п.) Улучшения рендеринга текста с помощью DirectWrite Использование h.264, divx Ribbon
Microsoft TechDayshttp://
Связывание с данными в WPF Выбор способа связывания Возможности master/detail сценариев Возможности визуализации данных Разворачивание Ближайшее будущее
Microsoft TechDayshttp:// WindowsClient.net/ WPF CodePlex.com/WPF us/netframework/aa aspx
Microsoft TechDayshttp://
© 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 TechDayshttp://