Модераторы: gambit, Kefir, Partizan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поговорим о WPF, короткая заметка 
:(
    Опции темы
Kefir
Дата 30.5.2008, 15:30 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



Windows Presentation Foundation

Доброе время суток. Сегодня я собираюсь немного рассказать об одной из самых могучих библиотек для построения пользовательского интерфейса – Windows Presentation Foundation (далее WPF). Хочу заметить, что лично я ещё не видел библиотеку для GUI, которая превосходила бы WPF по возможностям. Однако, не буду более разводить демагогию и перейду к доказательной базе.


XAML

В первую очередь, на мой взгляд, необходимо упомянуть такую штуку, как XAML (Extensible Application Markup Language). Что это такое? А вам никогда не хотелось писать GUI так же как вы пишете HTML для веб-страничек? Мне хотелось. Всегда хотелось. Я не понимал, почему обязательно надо возиться с созданием объектов, с кучей кода, который не имеет нормальной структуры и форматирования. Так вот. Эра этих мучений наконец-то подошла к концу! С чем я всех и поздравляю.

Код

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    Title="Окно с кнопкой"
    Width="250" Height="100">

  <!-- Добавляем кнопку в окно -->
  <Button Name="button">Click Me!</Button>

</Window>


Вот таким образом записывается окно и кнопка на нём. Это самый простой пример, который можно привести и здесь я его показал лишь для того, чтобы у вас было представление как описывается пользовательский интерфейс. На самом же деле при помощи XAML можно писать намного более сложные конструкции.



Шаблоны, стили, «Lookless» контролы

Что же такого мощного в WPF, что он поднял так много шума? Только XAML? Конечно, нет. Одной из отличительных черт WPF являются шаблоны и стили. Что это такое?

Шаблон – это структура контрола. Для лучшей наглядности рассмотрим такую вещь, как Button. Из чего состоит обычная кнопка? Из рамки с заливкой и текста. А что если мы захотим чтобы у каждой кнопки у нашем приложении был CheckBox? Или чтобы кнопки меняли цвет при наведении на них мышкой? Сделать это проще простого – нам просто придётся отредактировать шаблон кнопки. Двумя словами – шаблоны позволяют полностью менять вид контрола, сохраняя его функциональность, а также позволяют эту функциональность расширить.

Стиль – это набор установок для контрола. Для чего он нужен? Для того, чтобы можно было менять свойства множества кнопок, редактируя только один стиль. К примеру, стиль может содержать информацию об отступе (Margin), цвете фона (Background) и даже задавать шаблон.

С появлением в WPF стилей и шаблонов появилось также определение «Lookless» (безликий) контрол. Это значит, что теперь контролы по сути своей являются чистой логикой. Они предоставляют некие свойства, события и методы. Однако информация о том, как они должны выглядеть на экране теперь полностью контролируется шаблонами и стилями.


Анимации

Думаю, никто не сможет возразить - людям надоели неподвижные, скучные интерфейсы. И один из способов этот интерфейс украсить это анимировать некоторые его элементы. Приятно, когда кнопка плавно менеят свой цвет при наведении мышки. Так вот, до WPF не было нормального способа для создания такого интерфейса. Это было реально, но муторно. Кому нравится делать анимацию высоты в цикле? Причём так, чтобы можно было его останавливать. А теперь подумайте, как это выглядит, если надо анимировать несколько обьектов. Это ведь сколько лишней работа. Но только не в WPF. Тут надо только сказать "поменяй цвет кнопки с синего на красный в течение секунды". И всё! Те, кто знакомы с Flash будут приятно удивлены (привет Timeline, привет Keyframe-ы!).


3D

Ещё один из пряников WPF - возможность использования 3D в программе не увидев ни одного слова DirectX. Даже не вспомнив, что такая штука существует. Можно без всяких проблем добавить трёхмерную графику в любое место вашего приложения. Более того, всё это можно написать при помощи XAML, не написав ни строчки на C#. Хотите сделать кнопку, которая при нажатии переворачивается (в трёхмерной манере) и на её обратной стороне показывается картинка? Пожалуйста, пишите.


Data Binding

И наконец, привязка данных. Просто поразительно что можно сделать с его помощью. Вкратце (кто об этом не слышал) - это когда у вас есть энное количество элементов, которые вы должны показать в ListBox. "Ну можно и можно", - скажете вы - "Чего такого-то?". А я отвечу. Для начала - можно делать привязку данных опять же не написав ни строчки кода! Уже существуют RSS-клиенты, написанные на чистом XAML. Но это ещё цветочки. А среди истинных ягодок - шаблоны данных. К примеру, у вас есть класс MyImage, который содержит Source, Title, Description, Date. Вам нужно показать это в ListBox. Причём чтобы были отражены все поля. Что вы будете делать без WPF? Правильно - мучаться. А в WPF вам надо всего лишь указать шаблон данных для ListBox. Получится примерно следующее:

Код

 <ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myImageList}}">
   <ListBox.ItemTemplate>
     <DataTemplate>
       <StackPanel>
         <Image Source="{Binding Path=Source}" />
         <TextBlock Text="{Binding Path=Title}"/>
         <TextBlock Text="{Binding Path=Description}"/>
         <TextBlock Text="{Binding Path=Date}"/>
       </StackPanel>
     </DataTemplate>
   </ListBox.ItemTemplate>
 </ListBox>


Всё. Мы передали ListBox-у массив обьектов. А у него определён метод того, как надо эти обьекты отображать.


***
Итак, в этой заметке я показал лишь небольшую часть от нововведений WPF. Я пытался выбрать самые интересные из них. И если у вас появилось хоть какой-то интерес к этой технологии, значит я не зря потратил время.

СУВ,
Kefir

PS первая заметка. жажду здоровой критики и замечаний.

Это сообщение отредактировал(а) Kefir - 30.5.2008, 15:33
PM MAIL WWW Skype   Вверх
-Mikle-
Дата 31.5.2008, 00:31 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 13
Всего: 59



Лично я уже месяца три как интересуюсь. Думаю многие ленятся или боятся суваться во что-то новое, но рано или поздно, все равно придется  smile 

А так, ИМХО, статья захватывает внимание новичков.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
THandle
Дата 18.7.2008, 06:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: нет
Всего: 372



Kefir, заинтриговал smile Буду, видимо переходить на WPF. Красивая и видимо удобная вещь smile Было бы интересно почитать еще заметочки. Особенно в таком стиле. Очень захватывает smile
PM   Вверх
nikitao
Дата 20.7.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: нет
Всего: 26



Изучаю сейчас WPF. Очень круто , ничего не скажешь , но меня не оставляет одно чувство )))

Чувствется некая незавершенность в техналогии. что то где то недоделано чуток. Тоже самое было с .NET 1.x и ко второй версии как рвз было все доведено до ума. Мне кажется в след версии WPF тоже самое будет. 

У вас нет такого же чувства ?


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Idsa
Дата 20.7.2008, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 2
Всего: 62



Цитата(nikitao @  20.7.2008,  20:53 Найти цитируемый пост)
У вас нет такого же чувства ? 

Нет smile У меня обратные чувства от обилия новых плюшек. Мелкие косяки, конечно, есть. Самый существенный из них - отсутствие некоторых важных контролов (но достойные бесплатные сторонние компоненты уже есть). А так потихоньку фиксятся недочеты: в .NET 3.5 пофиксились недочеты .NET 3.0, а в .NET 3.5 SP1 соответственно фиксятся недочеты .NET 3.5.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
NightmareZ
Дата 16.2.2009, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: нет
Всего: 13



Цитата(-Mikle- @  31.5.2008,  00:31 Найти цитируемый пост)
А так, ИМХО, статья захватывает внимание новичков.

+1  smile 


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
VirmarY
Дата 17.11.2009, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 9.11.2009
Где: Гродно

Репутация: нет
Всего: нет



Цитата(-Mikle- @  31.5.2008,  00:31 Найти цитируемый пост)
А так, ИМХО, статья захватывает внимание новичков. 


статья для этого и предназначена =) многие боятся новых технологий. а такие вот статьи преподносят основные возможности на блюдечке и интригуют новичка. автору зачет.

Вообще если вы хотите написать какую-то программу с оригинальным внешним видом - без WPF не обойтись

PM MAIL ICQ   Вверх
WolfTheGrey
Дата 14.12.2010, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: 2
Всего: 2



Я может не туда пишу, но что делать с мобильными устройствами???

Уже появилась Windows Phone 7. Она хоть сервелат поддерживает? или писать проги на карявом  Compact Framevork ?
PM MAIL   Вверх
Kefir
Дата 15.12.2010, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



WolfTheGrey, WP7 поддерживает Silverlight и XNA
PM MAIL WWW Skype   Вверх
ДобренькийПапаша
Дата 24.3.2011, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 2
Всего: 7



Перечитываю мануал по WPF - готовлюсь к сдаче экзамена на сертификат. Нет, всё-таки не оставляет ощущение нездоровой "навороченности". Эта часть framework'а (WPF) совершенно неочевидна и нетривиальна как основная часть framework'а (которая тоже наворочена, но является более ясной). Новичок не сможет работать с WPF. Да, сможет решать тривиальные задачи, но если ему придётся капнуть глубже - он будет в шоке от такой инкапсуляции запутанной. Да, сейчас мне ясно как работают зависимые свойства и маршрутизируемые события, но тем у кого нет хотя бы года опыта разработки (по минимуму) понять эти вещи (понять достаточно глубоко, а не на уровне "где-то что-то слышал как-то было дело") будет нереально.

В целом, хочется сказать, что так плодить framework'и нельзя. Надо дать сообществу программистов пообкатать эти технологии. В России только-только начинают использовать WPF, WCF - а мы уже в ожидании пятой версии платформы (есть предположение, что к концу следующего года уже может выйти релиз .NET 5.0). Мне видится, что консервативность Java в этом плане более правильна. Ну хорошо, пусть .NET 4.0 мы получили, но на этом надо остановиться на некоторое время (ну года на три, но не на один и не на два).

Кто что скажет по этому поводу?


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Kefir
Дата 25.3.2011, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



Не согласен я. WPF не сложный. Точнее так - он не более сложен, чем любые другие фреймворки в которые надо вливаться и понимать их суть. Везде нужен опыт и книжки для доводки своих знаний. Это процесс изучения. Это нормально. И вообще - как вы себе представляете такую красивую систему без тех же самых dep properties и подобного? Нельзя же просто сказать "Знаете, давайте откажемся от половины плюшек в WPF и вырежем механизм шаблонов. А то что-то слишком сложно получается".

Ну а развитие самой платформы радует меня просто чрезвычайно. Тут я тоже не пойму чем это плохо. Никто пока таргетить 2.0 не запрещает. Меня радуют улучшения в GUI (привет, рендеринг шрифтов), радуют улучшения EF4 (привет POCO/Proxy). Кому не надо - пущай таргетят обкатанные предыдущие версии. Ну а когда выйдет C# 5.0 никто ведь не будет принуждать использовать async. Свобода выбора она такая smile
PM MAIL WWW Skype   Вверх
-Mikle-
Дата 28.3.2011, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 13
Всего: 59



Согласен с Kefir. На все нужно время и усилие. Что по поводу новичков, то многим и WinForms не понятен. А как было раньше? Писали бедняги под MFC и потели. Никто тогда не говорил "ой, что-то сложно, неудобно". Щас выходят новые абстракции и уровни упрощающие и улучшающие и опять не нравится. Если сравнить качество получаемого результата в WPF и MFC при одних и тех же усилиях, то разница громадная. Да и о каких усилиях я говорю... продолжая приводить в пример тот же самый MFC, даже отлично знающий его и имеющий опыт не с легкостью сделает навороченный интерфейс. А в WPF, достаточно только понять его устройство (научиться) и любой интерфейс не займет у вас много времени. И еще более равивая тему, скажу, теперь вам вообще не надо заботится об интерфейсе. Вам надо сделать только лишь его шаблон (необходимо важные его части), а сам интерфейс теперь может рисовать дизайнер воплощая все самые смелые свои желания и используя привычно выглядящий для дизайнера инструмент. Все, хватит программистам материть дизайнеров за их идеи, пусть теперь сами делают че хотят. Через какое-то время их станет все больше и больше (как когда начали появлятся вэб-дизайнеры). И лично я, рад что это все мы имеем уже сейчас. Это позволяет уже сейчас заниматься этими вопросами, учить своих дизайнеров, программистов чтобы года через два, они уже были. Правильно Кефир говорит, Майкрософт не заставляет вас использовать новые версии сразу, как только они выходят. Но пусть они выходят уже сейчас, чтобы мы их уже изучали и щупали. И чтобы добить наконец-таки, версии между собой не очень сильно разнятся. После входа в эту новую среду для меня не составляет особых усилий придерживаться нововедений в версиях (да и для многих тоже) так как в основном это вкусности (классные такие).


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
ДобренькийПапаша
Дата 29.3.2011, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 2
Всего: 7



Блин, а у меня столько инфы в голове не укладывается - просто не знаю, что делать. Прочитал большую часть книги МакДоналда, при этом на большую часть вопросов теста (есть доступный дамп) ответить не могу - понимаю, что сертификата не достоин.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
-Mikle-
Дата 30.3.2011, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 13
Всего: 59



Могу только дать совет - не торопиться. Хороший отдых и временная смена мозговой деятельности - часто способствуют усвоению. у меня, например, на работе всегда лежит журнал сканвордов, кроссвордов, судоку, анекдотов (намеренно не пользуюсь онлайновыми). И периодически, года втупляюсь во что-то, я берусь за него. Даже часок такой деятельности всегда помогает. Но это может только лично для меня работает, у других не знаю, попробуйте.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Kefir
Дата 30.3.2011, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



Да ну, книга это, конечно, хорошо... Но толку от таких книг мало если всё только в теории смотреть и приложенные выдержки из кода читать. Ты возьми да и напиши какую программу. Чтобы со всякими примочками, стилями, зависимыми пропертями, с MVVM. А там глядишь через пол-годика (учитывая что программа пишется в свободное время) всё само-собой поуляжется и врежется в память намертво. Я могу честно признаться что до сих пор некоторые вещи в мсдн подглядываю, но это уже мелочи жизни. Главное в суть вникнуть, а кроме практики этого никак не добится.
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.1656 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.