![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Exception |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
С чего должна начинаться любая статья? Правильно, со вступления. Что же, для начала, мне следует хотя бы кратко рассказать вам о предмете, о котором пойдёт речь. В данной статье я постараюсь описать свои ощущения, возникшие при ознакомлении с платформой WPF (Windows Presentation Foundation), входящей в состав недавно выпущенного .NET Framework 3.0 (ранее называвшегося WinFX). Эта платформа представляет собой замену уже ставшему для многих привычным Windows Forms 2.0, при этом привнося некоторые совершенно новые для многих разработчиков .NET концепции (конечно же, я говорю о XAML). WPF в первую очередь ориентирована на Windows Vista, но будет совершенно нормально работать и на Windows XP SP2, которым пользовался автор статьи.
Для начала работы с .NET 3.0 необходимо либо дождаться релиза следующей Visual Studio с таинственным кодовым именем Orcas, либо добавить поддержку версии 3.0 в текущую версию (речь идёт, безусловно, о VS 2005). Инструкции по загрузке и установке .NET 3.0 вкупе с расширениями для VS можно найти в конце статьи. Примечание: .NET 3.0 так называется исключительно, повторяю, исключительно из маркетинговых соображений. На самом деле это всё тот же .NET 2.0 Runtime и несколько новых библиотек - WPF (Windows Presentation Foundation), которую мы рассматриваем в этом обзоре, WCF (Windows Communication Foundation) и WWF (Windows Workflow Foundation). Среди программистов также популярна шутка, что Microsoft забыла выпустить библиотеку с наименованием WTF Итак, предположим, что установка прошла спокойно, и вы нажали на кнопку "Finish". Кстати, я не зря использовал слово "предположим" применительно к успешному концу установки: для вящего эффекта после установки инсталлятор радостно выкинул BSoD, чем поверг меня в уныние. В прочем, потом он присмирел и таки дал мне спокойно начать работать играться с новой библиотекой. Теперь, когда все дебри установки остались позади, мы должны запустить Visual Studio и создать новый проект. Насколько я знаю, никаких проблем с обратной совместимостью нет, так что можно будет безбоязненно работать и со старыми проектами из той же студии. Для создания нового проекта с использованием WPF необходимо выбрать шаблон "Windows Application (WPF)", появившийся с установкой расширений. Первое, что мы замечаем - это изменения в дизайнере: теперь он разделён на две части, в которых располагаются, соответственно, дизайнер и редактор кода. Но самое сокрушительное изменение обнаруживается при взгляде на Solution Explorer: код формы теперь хранится в файле с расширением *.xaml. Что же, теперь на XML кодить будем? Не совсем. Потому что файл с именем TestWindow.cs тоже присутствует. Наберите в лёгкие воздуха и задержите дыхание... На XAML (диалект XML, разработанный Microsoft) пишется только код пользовательского интерфейса. Медленно выдохните. Вы поняли меня? Нет? Тогда читайте дальше. Новый дизайнер. Файлы XAML. Примечание: XAML произносится не "ксамл" и даже не "икс эй эм эль". Правильное произношение - "замл". Попробуем разобраться в новшествах WPF, для чего нам придётся немного пройтись по базовым знаниям архитектуры Windows Forms. Раньше, чтобы добавить на форму текстовое поле, нужно было описать поле типа TextBox в классе формы, инициализировать его и добавить в коллекцию компонентов (то есть, конечно, за нас эту работу выполнял дизайнер, но сути оно не меняет). WPF предлагает записывать интерфейс в XML, то есть простая форма с текстовым полем описывается примерно так: TestWindow.xaml
TestWindow.xaml.cs
Не нужно быть гением, чтобы догадаться, что корневой элемент - Window - представляет собой окно. Он содержит по одному атрибуту на каждое свойство класса System.Windows.Window, в чём-то неуловимо похожего на System.Windows.Forms.Form Весь код логики пишется именно в файле *.cs, причём до "настоящего" класса, содержащего реализацию метода InitializeComponent(), теперь не так-то просто достучаться, поскольку его не видно даже по нажатии в Solution Explorer кнопки "Show All Files". Файл из *.designer.cs прератился в *.g.cs и, этот partial-класс выглядит так: TestForm.g.cs
Примечание: интересно, а я один заметил, что имя переменной resourceLocater в методе Connect() написано с ошибкой Как видно, во время выполнения библиотека WPF в лице класса System.Windows.Application извлекает XAML-файлы из ресурсов приложения и "на ходу" создаёт форму. В чём плюсы такого подхода? На самом деле, идея декларативного языка для описания UI ни в коем случае не является новой. Сейчас получил большое распространение диалект XML "XUL" (зул), используемый в качестве основы для написания UI таких приложений, как Mozilla Firefox и Mozilla Thunderbird. Также существует аналог XAML c открытым исходным кодом, который называется MyXaml. На самом деле, в моём понимании ни тот, ни другой ни в коем случае не являются аналогом XAML из-за гораздо более скудного набора возможностей. Каковы плюсы подобного подхода? Позвольте мне перечислить самые, на мой взгляд, очевидные:
Формочка. Как вы, вероятнее всего, уже догадались, это была вводная часть в обзор WPF, который я планирую писать в соответствии с моим собственным продвижением в познании этой платформы. Adios Это сообщение отредактировал(а) Exception - 13.12.2006, 20:26 |
||||||
|
|||||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Скорее всего, долго загружаются многочисленные библиотеки P.S. Exception, ты пиши статью (не бросай как Nemerle), а я её закреплю и возможно со временем буду дополнять сам. Даёшь русскоязычный FAQ по XAML ! -------------------- ![]() |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
Про WPF с лёгкой руки пишется (вероятно, сказывается то, что не приходится переводить - мысли сами быстрее лезут в голову
Добавлено @ 23:18 Кстати, отличная мысль. Ибо, как я заметил, "непривычные" для XP штучки тормозят именно первые секунды их использования - эх, JIT.. Добавлено @ 23:24 Ой да - сразу напишу инструкции по установке. Инструкции по установке .NET 3.0 и расширений для разработки приложений под него Сперва мы должны скачать .NET 3.0 Redistributable Packgage. Сам он весит немного, только вот инсталлятор потом ещё качает 39 MB из интернета, так что, если у вас узкий канал, не тратьте зря время и нервы. После установки следует скачать и установить Visual Studio 2005 extensions for .NET Framework 3.0 (WCF & WPF). Ссылка ведёт на November CTP, так что, если скачаете не самую свежую версию, не обессудьте. Но пока что она самая новая. Вот, в принципе, и всё. |
|||
|
||||
| Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
Вот "полный" .NET 3.0 здесь (50,4 МБ) Загрузка формочки заняла 5 с. Только вот как быть с тем же TextBox... (см. рис. U3) не все же знают англицкий. Это теперь надо каждый переводить Это сообщение отредактировал(а) Softaz - 12.12.2006, 23:50 Присоединённый файл ( Кол-во скачиваний: 89 )
U2.gif 10,17 Kb-------------------- Разочарованный в .NET |
|||
|
||||
| Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
Либо я либо форум глючат.
Не возможно добавить еще один файл в сообщение. Вот тот рисунок. Добавлено @ 23:53 Из рисунка видно, что контекстное меню на английском. Смена культуры ничего не дала. И где пункты "Отменить" и "Удалить"? Конечно, можно сделать свои, но все же Присоединённый файл ( Кол-во скачиваний: 85 )
U3.gif 4,54 Kb-------------------- Разочарованный в .NET |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Softaz, Thread.CurrentThread.CurrentUICulture часом не английская ?
-------------------- ![]() |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Exception, молодец. Так держать. Первооткрыватель ты наш
Прекрасно понимаю За неимением лицензии на DevExpress на ноуте, пришлось в командировке лазить по коду дизайнера. Ну и кака, я вам скажу. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Поставил .NET 3.0 SDK и VS Extensions под висту. Кстати, первый почему-то называется "Windows SDK"
Первое впечатление от знакомства с документацией и примерами: "они всё изменили !!!" -------------------- ![]() |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Что-то слишком всё хардкорно: дизайнер не доделан, xaml приходится редактировать вручную, на события подписываться - тоже вручную, толкового описания возможностей контролов нигде нету...
-------------------- ![]() |
|||
|
||||
| Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
Я ж написал, что менял на русскую (ru-ru). Ничего не дало -------------------- Разочарованный в .NET |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
Softaz, возможно, поможет русский language pack для рантайма (он ещё не вышел?).
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
Дело не в языковом пакете, а в том, что раньше (везде) кинешь на форму текст бокс, скажем, - а минимальное контекстное меню уже есть, причем "на языке системы", поскольку все это выполнялось через WinApi. В NET2.0 еще было (конечно, система там другая). А здесь (в 3.0) даже на текст бокс приходится вешать свое меню, да еще писать тексты в локальные ресурсы, если приложение мультиязыковое. P.S.: Помню, когда тольок вышли FW, многие возникали по поводу большого размера в 20 МБ. Сейчас уже 50 МБ. Пока тихо. Скоро начнется... -------------------- Разочарованный в .NET |
|||
|
||||
| Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 25 Всего: 173 |
В Висте .NET 3.0 предустановлен. На многие компьютеры .NET попадёт с Windows Update. А проблемы наших диалапщиков MS не тревожат.
Не совсем понял. В 2.0 придётся делать то же самое, если требуется поддержка каких-то языков, кроме английского и языка локализации Windows. Поскольку 3.0 почти не использует WinAPI, вместо последнего (по идее) накатывается langpack. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 29 Всего: 186 |
О, тогда замечательно. Softaz, ты просто скачал английский .NET Runtime. А я - русский Добавлено @ 20:22 Постой. Так ты же на Висте пробуешь. А я - на XP. Виста у тебя английская, видимо, по крайней мере, .NET в неё встроен английский |
|||
|
||||
| Gelis |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 26.10.2006 Где: Брест Репутация: 2 Всего: 4 |
А дизайнер внутри студии и не доделают. Был на семинаре "Дни разработчика Microsoft" и медленно похрапывал под рассказы мужика с Мелкософта о WPF. Так вот что понял сквозь сон: 1. В Vista вся графика будет векторная, т.е. даже иконки будут векторными. 2. В Visual Studio будет какой-то дико урезанный дизайнер форм. Полный дизайнер будет выпускаться отдельным продуктом и это будет графическое ПО уровня Adobe Illustrator или Corel. В этом дизайнере будет генерится XAML код который затем можно будет экспортировать в VS. В VS этот XAML-код можно будет перегнать в C#. Почему так сделано. Ну по-моему мнению Мелкософт хочет еще хапнуть денег продавая буржуям отдельно дизайнер форм. По-ихнему: предполагается что над любым проектом будут работать хотя бы два человека:1. Дизайнер - рысавать векторные элементы управления, формачки, иконки и т.п. 2. Программист, который не будет отвечать за интерфейс, а лишь за бизнес логику. Т.е. типа чтобы не заставлять программиста работать с графикой, а дизайнера с кодом типа выпускать будут два разных продукта. 3. Дизайнер форм уже типа готов, нам типа даже его показывали, но где скачать какую-нить бету так и несказали 4. У элемента управления нет своего изначально заданного графического интерфейса и мы можем его задать произвольным. Т.е. не прыдется делать свои компоненты типа круглой кнопочки. Ладно пойду попью пива, завтра еще че-нить интересного вспомню напишу. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |