Михаил Черномордиков Developer Evangelist, Microsoft Россия
Сеть Работа с данными в Сети class Car { public string Image {get;set} public string Model {get;set] } class Car { public string Image {get;set} public string Model {get;set] } Получение и подготовка Трансфор -мация
Получение и подготовка Сериализация WSDL/SOAP - Web Services serialization JSON - DataContractJSONSerializer XML Работа с XML XmlReader XmlWriter
Language INtegrated Query Позволяет исполнять специальные запросы с проверкой синтаксиса, строгой типизацией и Intellisense Работает на любом источнике на базе IEnumerable Поддерживает фильтрацию и сортировку данных в памяти Унифицированный доступ к различным источникам LINQ to XML LINQ to JSON LINQ to Objects
Инновации в языке var contacts = from c in customers where c.City == "Hove" select new { c.Name, c.Phone }; var contacts = customers.Where(c => c.City == "Hove").Select(c => new { c.Name, c.Phone }); Методы расширения Лямбда- выражения Выражения запроса Инициализаторы объектов Анонимные типы Ссылка на локальный тип
Работа с данными через LINQ ParseUsingLinqToXml
Связывание данных Двунаправленное связывание данных между элементами интерфейса и CLR-объектами (или коллекцией объектов) Binding binding = new Binding("Nasdaq.Points"); binding.Mode = BindingMode.OneWay; TextBlock tb = new TextBlock(); tb.SetBinding(TextBlock.TextProperty, binding);
Связывание данных Связывание свойств одного объекта со свойствами другого объекта Свойство получателя должно быть DependencyProperty Свойство источника может быть любого типа Источник может быть коллекцией, если получатель поддерживает связывание со множеством Разметка {Binding} обеспечивает декларативную поддержку data binding
Источники данных Можно связать интерфейс с любым публичным свойством CLR-объекта (public property) DataContext: свойство FrameworkElement, которое определяет источник данных для данного элемента и всех дочерних подэлементов в дереве Binding.Source: позволяет явно указывать источник данных для каждого связывания
Режимы связывания One Way Обновления в источнике данных отражаются в UI DataSource реализует интерфейс INotifyPropertyChanged для уведомления Two Way Изменения в UI отражаются в бизнес-объекте
Data Templates – шаблоны данных DataTemplate class Car { string Image {get;set} string Model {get;set] }
Валидация Событие BindingValidationError Через исключения в Converter или сеттере свойств Включение Mode=TwoWay NotifyOnValidationError=true ValidatesOnExceptions=true
DataGrid Может быть связан с данными Поддержка скроллинга Модель полного выделения строки Текстовый столбец Шаблон столбца Поддержка скинов Возможность редактирования Автогенерация колонок Стили Детали строки Изменение размеров пользователем Столбец с checkbox Виртуализация строк Автомасштабирование Изменение порядка столбцов Сортировка несколькими столбцами «Замороженные» столбцы Фильтрация
DataGrid
Конвертеры Реализуют интерфейс IValueConveter Могут быть использованы с {Binding..} One Way или Two Way Из источника = Convert Из получателя = ConvertBack
Связывание с коллекциями Любой тип IEnumerable поддерживается Уведомления – для Two Way INotifyCollectionChanged ObservableCollection
Content Control Готовое место для шаблона данных Применение шаблона данных через ContentTemplate
Content Control Делаем «мегакнопку»
ItemsControl Повторяет UI для каждого элемента данных Возможности настройки внешнего представления Основанный на формах класс для списочных элементов управления – например, ListBox
Михаил Черномордиков Developer Evangelist, Microsoft Россия