Silverlight Training

advertisement
Михаил Черномордиков
Developer Evangelist, Microsoft Россия
mikcher@microsoft.com
http://blogs.msdn.com/mikcher
http://www.remix.ru
Работа с данными в Сети
Сеть
Трансфор
-мация
Получение
и
подготовка
class Car
{
public string Image {get;set}
public string Model {get;set]
}
http://www.remix.ru
Получение и подготовка
 Сериализация
WSDL/SOAP - Web Services serialization
JSON - DataContractJSONSerializer
XML
 Работа с XML
XmlReader
XmlWriter
http://www.remix.ru
Language INtegrated Query
• Позволяет исполнять специальные
запросы с проверкой синтаксиса, строгой
типизацией и Intellisense
• Работает на любом источнике на базе
IEnumerable<T>
• Поддерживает фильтрацию и сортировку
данных в памяти
• Унифицированный доступ к различным
источникам
• LINQ to XML
• LINQ to JSON
• LINQ to Objects
http://www.remix.ru
Инновации в языке
Ссылка на
локальный тип
Выражения
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 });
Методы
расширения
Инициализаторы
объектов
Анонимные
типы
http://www.remix.ru
Работа с данными
через LINQ
ParseUsingLinqToXml
Связывание данных

Двунаправленное связывание данных между
элементами интерфейса и CLR-объектами (или
коллекцией объектов)
<TextBlock Text="{Binding Nasdaq.Points, Mode=OneWay}"/>
Binding binding = new Binding("Nasdaq.Points");
binding.Mode = BindingMode.OneWay;
TextBlock tb = new TextBlock();
tb.SetBinding(TextBlock.TextProperty, binding);
http://www.remix.ru
Связывание данных

Связывание свойств одного объекта со
свойствами другого объекта
 Свойство получателя должно быть
DependencyProperty
 Свойство источника может быть любого типа
 Источник может быть коллекцией, если получатель
поддерживает связывание со множеством

Разметка {Binding} обеспечивает
декларативную поддержку data binding
Источники данных

Можно связать интерфейс с любым
публичным свойством CLR-объекта (public
property)
DataContext: свойство FrameworkElement,
которое определяет источник данных для
данного элемента и всех дочерних
подэлементов в дереве
 Binding.Source: позволяет явно указывать
источник данных для каждого связывания

http://www.remix.ru
Режимы связывания
• One Way
• Обновления в источнике данных отражаются в
UI
• DataSource реализует интерфейс
INotifyPropertyChanged для уведомления
• Two Way
• Изменения в UI отражаются в бизнес-объекте
http://www.remix.ru
Data Templates – шаблоны данных
class Car
{
string Image {get;set}
string Model {get;set]
}
DataTemplate
<DataTemplate x:Key="carTemplate">
<Border BorderBrush="Blue" BorderThickness="2" Background="LightGray"
Margin="10" Padding="15,15,15,5">
<StackPanel>
<Image HorizontalAlignment="Center" Source="{Binding Path=Image}" />
<Border HorizontalAlignment="Center" BorderBrush="Navy"
Background="#DDF“ BorderThickness="1" Margin="10" Padding="3">
<TextBlock FontSize="18" TextContent="{Binding Path=Model}" />
</Border> </StackPanel>
</Border>
</DataTemplate>
http://www.remix.ru
Валидация

Событие BindingValidationError
 Через исключения в Converter или сеттере
свойств

Включение
 Mode=TwoWay
 NotifyOnValidationError=true
 ValidatesOnExceptions=true
http://www.remix.ru
DataGrid









Может быть связан с
данными
Поддержка скроллинга
Модель полного
выделения строки
Текстовый столбец
Шаблон столбца
Поддержка скинов
Возможность
редактирования
Автогенерация колонок
Стили









Детали строки
Изменение размеров
пользователем
Столбец с checkbox
Виртуализация строк
Автомасштабирование
Изменение порядка
столбцов
Сортировка несколькими
столбцами
«Замороженные» столбцы
Фильтрация
http://www.remix.ru
DataGrid
Конвертеры

Реализуют интерфейс IValueConveter
 Могут быть использованы с {Binding ..}
 One Way или Two Way
○ Из источника = Convert
○ Из получателя = ConvertBack
http://www.remix.ru
Связывание с коллекциями

Любой тип IEnumerable поддерживается

Уведомления – для Two Way
 INotifyCollectionChanged
 ObservableCollection
http://www.remix.ru
Content Control
Готовое место для шаблона данных
 Применение шаблона данных через
ContentTemplate

http://www.remix.ru
Content Control
Делаем «мегакнопку»
ItemsControl
Повторяет UI для каждого элемента
данных
 Возможности настройки внешнего
представления

<ItemsControl x:Name="ItemsControl" ItemsSource="{Binding
SearchItemCollection}” />

Основанный на формах класс для
списочных элементов управления –
например, ListBox
http://www.remix.ru
Михаил Черномордиков
Developer Evangelist, Microsoft Россия
mikcher@microsoft.com
http://blogs.msdn.com/mikcher
http://www.remix.ru
Download