Впечатления о втором дне MIX’11: Silverlight 5 Beta
- modified:
- reading: 3 minutes
Буквально несколько часов назад нам анонсировали Silverlight 5 на конференции MIX’11. Даже можно скачать Silverlight 5 Beta and Tools и попробовать в живую. Я тоже это сделал, ради любопытства. Поставил на виртуальную машину, попробовал несколько новых фич. Вам, кстати, тоже не рекомендую ставить на рабочую машину, если вы Silverlight разработчик, и сейчас разрабатываете на Silverlight 4. У меня постоянные зависания, повторяется всегда с ChildWindow. Но это все может быть из-за того, что стоит все на виртуальной машине, да еще и на Windows Server 2008 R2 (та виртуалка, на которой мы разрабатывали проект на HackDay). Но я вас предупредил.
Ознакомиться с новыми фичами Silverlight 5 можно (и нужно!) в нескольких местах, например, в блоге Tim Heuer – Silverlight 5 Beta – A guide to the new features. Еще кто-то кинул в твиттере ссылку на pdf документ, на сайте Silverlight.net Silverlight 5 Beta Technical Features (как на него попасть – не знаю).
Вкратце из мне понравившегося в Silverlight 5 (то есть то, что я действительно ждал и хотел бы использовать сейчас):
- У RelativeSource появился Mode=FindAncestor, тот, который уже давно живет в WPF, и которого мне лично не хватало в Silverlight. При помощи его можно указать, какой тип элемента ищем (так же какой по счету, если нужно пропустить несколько), и байндинг пройдется по дереву контролов вверх (по родителям) в поисках контрола с указанным типом. Особенно это полезно в Template описаниях, будем надеяться, что там все будет работать.
- У DataTemplate теперь можно задать тип, для которого вы его описываете. Опять же, это хорошо известная фича для WPF разработчиков. Очень полезно. Недавно, например, к TreeView байндил иерархическую коллекцию объектов, среди которых встречаются разные типы, наследуемые от одного базового. Конечно же, каждый тип нужно отображать по-разному, пришлось сделать дополнительные свойства у моделей, и просто в Template прятать некоторые части. В SL5 будет намного проще, нужно описать разные DataTemplate для разных типов.
- Теперь есть возможность создавать MarkupExtension. При помощи него можно сделать лучшее решения для локализации приложения. Он позволяет расширить синтаксис XAML, и можно, например, вместо StaticResource или Binding придумать что-то свое. Как я уже сказал – в основном все используют для локализации.
- Теперь можно отлаживать байндинг в Visual Studio. То есть ставить точку останова прямо в XAML коде в местах Binding. Честно признаюсь, фича прикольная, но мне как-то и без нее было хорошо. Я и так могу понять, что Source не тот установлен или типы не совпадают. Мне хватало просмотра Output в Visual Studio.
И мне не понятны опять какие-то кривые решения Silverlight давно проверенным вещам. Вот сделали они для Silverlight 5 поддержку окон, теперь можно в OOB приложениях создавать окна, но как они сделали, что это:
Window tearOffWindow = new Window();
tearOffWindow.Height = 400;
tearOffWindow.Width = 600;
tearOffWindow.Top = 24;
tearOffWindow.Left = 30;
tearOffWindow.Title = “Stock Console”;tearOffWindow.Content = myUIElement; //Set content to someFrameworkElement
tearOffWindow.Visibility = Visibility.Visible; //Display the Window
Почему нет нормального метода Show? Close то есть. И почему нет поддержки модальных окон? В общем, если это не недоделки SL5 Beta, то я уже знаю несколько новых фич, которые нам стоит ожидать от Silverlight 6 или 7. Спешат с версиями Silverlight, и всегда контролы у них не доделанные, архитектура не доработанная и т.п.
Думаю, что скоро будут опубликованы интересные и подробные статьи о новых фичах Silverlight 5. А вообще, это пока что бета версия, для меня это просто повод посмотреть, задуматься и отложить до выхода более свежей версии.
See Also
- Silverlight: Байндинг коллекции элементов на TabControl.ItemsSource
- Используем Silverlight DataPager без WCF RIA
- Silverlight basics. Validation. Part 2. IDataErrorInfo & INotifyDataErrorInfo
- Silverlight basics. Validation. Part 1. DataAnnotations & ValidatesOnExceptions
- Как часто вы думаете о том, что пользователь может нажать Double-Click, где это не предусмотрено?