Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

03.11.13 / ! / WPF Series

.doc
Скачиваний:
45
Добавлен:
08.06.2015
Размер:
104.45 Кб
Скачать

WPF Series: Intro aka Введение.

.NET*

Года 3 назад, обсуждая Windows Forms с другом, я жаловался на то что неудобно использовать Windows Forms для вывода видео и музыки, а друг о том, что ему неудобно создавать свои контролы, а также формировать тулбары. Мы и не думали тогда, что нам так упростят жизнь. Но у любой технологии есть свои плюсы и минусы. Мы платим за нее своим временем, своими проектами, когда года 1.5 назад я выпустил простейшее приложение для обновления одной игры (такого рода программы зачастую называют «Автопатчеры»), я и не думал о том, что не может быть столько людей, которые будут кричать не о том, что программа имеет плохой дизайн или баги, а то, что ведь нужно скачать 20 мегабайт .Net Framework 2.0. Жизнь научила меня изучать теперь сначала рынок, ведь даже самое красивое и правильное приложение может быть не оценено, если пользователю нужно совершать телодвижения, которые могут вызвать у него от сведения руки от нажатий кучи ненужных кнопок в диалогах программ до того, что ему нужно потратить дополнительный пенни для запуска вашей программы. Год назад я много слышал о различных технологиях, появившихся в Net Framework 3.0. Я уже начал писать ранее на C#/VB.Net в контексте ASP.Net и почитав отзывы наиболее рьяных архитекторов, решил подождать. Спустя полгода, а точнее прошлой весной, я слушал великолепные отзывы о технологии WPF от своего товарища, у него была одна проблема: 80% возможностей он так и не смог раскрыть, т.к. нормальная книга появилась летом (из тех, где подробно и довольно в доступной форме рассказывается о технологии), а до этого можно было почерпнуть информацию только из блогов, в коих, зачастую, многое упускалось из вида… Наслушавшись его, и умудрившись опыта, я сначала начал читать книгу, которая обновилась к этому времени, вместе с фреймворком до версии 3.5. Многое ускользало и пока продолжает ускользать от моего понимания, но теперь есть куда копать: западные блоггеры-программисты, раскусив плод WPF, застрочили как из пулемета, да и наши начинают догонять.

Что такое WPF?

В Windows с версии 3.11 присутствовал компонент вывода на экран GDI, позже его обновили, в Windows XP, если не ошибаюсь, уже используется GDI+. Проблем от использования GDI+ в приложениях было и будет много, наряду с GDI была подсистема вывода 3D – DirectX, существовавшая с Windows 95. У нее были другие проблемы, но главной проблемы – сильной загрузки процессора для перерисовки моделей у нее не было. Видимо решение у Microsoft зрело давно, раз они интегрировали WPF в Vista и Server 2008, которое, как мне кажется, и дало больший толчок для его использования, нежели всяческие семинары и статьи. Это, кстати дает дополнительный плюс, ведь упрощается модель редистрибуция приложений использующих 3 и 3.5 фреймворки. Собственно, как я думаю, Вы уже догадались, WPF использует DirectX для вывода приложений на экран пользователя. Но тут и первые грабли, т.к. отображение форм у пользователей будет местами разниться, ведь мы, же не сговорились и не скупили продукцию 3D middle и high видеокарт. В WPF, на данный момент существуют 3 уровня, для определения как будет «рендерится» формочка и остальные примитивы на экране. a) Уровень 0: Нет hardware acceleration (внутреннего ускорения). Примерно DirectX 7.0 b) Уровень 1: Частичная hardware acceleration. Примерно DirectX 8. c) Уровень 2: Все фичи задействованы. Примерно DirectX 9 и выше. Как узнать какой у вас уровень или у пользователя? Int renderingTier = (RenderCapability.Tier >> 16); if (renderingTier == 0) { // 0 уровень } Однако разработчики не ограничились тем, что использовали другой уровень презентационной модели, а сделали еще много вещей: a) Новая описательная модель формы и интерфейса в принципе — XAML b) Новая модель Компоновки: имеется ввиду не компоновщик на уровне компилятора, а новая модель включения одного в другое. Пример (в textbox вставить checkbox). c) Новые сопутствующие контролы и методы для печати и медиа. d) Новая модель привязки данных. e) Новые возможности в формах. f) Многое другое, что я еще не узнал. g) Возможность почти безболезненно перенести проект в Web (О XBAP Rich Web Application я расскажу, через пару статей). h) Анимация. Да называть все везде формами, наверное, неверно, ведь модель состоит из окон и страниц, страницы можно соответственно подгружать, что в веб-версии, что в обычной, через компонент Frame или через Canvas, например, в WPF/E (SilverLight). Пример подгрузки страницы: Frame.Source = new Uri ("Page1.xaml", UriKind.Relative); В следующей статье я рассмотрю XAML. Вкратце пока скажу, что XAML (eXtensible Application Markup Language) – это специальный описательный язык для документов, окон и страниц, чем то, напоминает этакую помесь XML и HTML. Ну и простой пример окна (только XAML):

  1. <Window

  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

  4. Title="TestingWPF" Width="310" Height="260"

  5. WindowStartupLocation="CenterScreen">

  6. <Grid>

  7. <Grid.ColumnDefinitions>

  8. <ColumnDefinition></ColumnDefinition>

  9. </Grid.ColumnDefinitions>

  10. <Grid.RowDefinitions>

  11. <RowDefinition></RowDefinition>

  12. </Grid.RowDefinitions>

  13. <TextBlock Grid.Row="0" Grid.Column="0">Hello World</TextBlock>

  14. </Grid>

  15. </Window>

* This source code was highlighted with Source Code Highlighter.

Кстати, советую для тестирования разметки и небольших кусочков использовать не Visual Studio, а XamlPadX или XamlHack, или XamlPad. В заключение, хотелось бы порекомендовать книги по WPF: 1) WPF. Windows Presentation Foundation в .NET 3.5 с примерами на C# 2008 для профессионалов Автор: Мэтью Мак-Дональд. Впечатления: Написано очень добротно, неточностей перевода мало, рассказано почти обо всем, минус – то, что маленький тираж, и когда она только появилась, пришлось побегать и месяца полтора ждать. 2) WPF. Windows Presentation Foundation в .NET 3.0 для профессионалов. Автор: тот же. Впечатления: «В целом книга написана очень хорошо, но, похоже, все-таки, местами слишком все подробно расписано и присутствуют неточности перевода» – это со слов человека (который упоминался в повествовании ранее), который ее читал. Upd. Блоги Вот немного блогов, посвящённых WPF: blogs.msdn.com/adam_nathan/ www.drwpf.com/blog — один из лучших WPF-блоггеров www.beacosta.com/blog — всё о Data Binding в WPF marlongrech.wordpress.com/ joshsmithonwpf.wordpress.com/ — один из лучших WPF-блоггеров work.j832.com/ learnwpf.com/ blog.pixelingene.com/ sachabarber.net/ — один из лучших WPF-блоггеров blogs.msdn.com/wpfsdk/ windowsclient.net/ www.codeplex.com/wpf/ — новые официальные контролы WPF wpf.netfx3.com/blogs/presentation_bloggers/ Английские книги Pro WPF: Windows Presentation Foundation in .NET 3.0 by Matthew MacDonald Essential Windows Presentation Foundation by Chris Andersen WPF Unleashed by Adam Nathan Дополнительные программы, для работы с WPF Kaxaml

(Спасибо хаброюзеру Vladek за помощь в дополнении поста и хаброюзеру XaocCPS за его рецензирование)

Буду рад, если Вы дополните этот список, особенно книгами на английском, т.к я пока еще их не изучал, но видел, либо сделаете уточнения к статье. Спасибо!

Соседние файлы в папке !