Tw-city.info

IT Новости
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Язык декларативного программирования xaml скачать бесплатно

10 причин моей любви и ненависти к XAML

XAML — неоднозначная технология, которая умудряется дать столько же возможностей, сколько и головной боли. Разбираемся в ее плюсах и минусах.

Что такое XAML

XAML — это расширенный язык разметки, который используется в.NET. Он схож с HTML, поэтому достаточно прост в освоении. У XAML есть множество качеств, за которые его можно любить, но у каждого такого качества есть обратная сторона, вызывающая ненависть.

Я собрал 5 причин для любви (и столько же — для ненависти) к XAML.

Евгений Кучерявый

Пишет о разработке сайтов, в свободное время создает игры. Мечтает открыть свою студию и выпускать ламповые RPG.

Люблю

Всё отображается так, как напишешь

Можно использовать Grid и выравнивание по горизонтали и вертикали, чтобы создавать адаптивные интерфейсы. Например, минут 15 достаточно, чтобы сверстать приложение с минималистичным дизайном:

Интерфейс отображается так, как было написано, а если его растягивать, то он сохранит пропорции:

Особенно это удобно для вертикального выравнивания, которое может быть непросто реализовать в HTML и CSS. Здесь это делается с помощью одного свойства VerticalAlignment:

И самое классное — не нужно адаптировать этот код под разные разрешения или браузеры.

Ненавижу

Чтобы всё отображалось, как ты хочешь, приходится писать много кода

Хотя большая часть задумок реализуется достаточно быстро, код получается громоздким, а иногда все же приходится прибегать к различным хитростям.

Например, в текстовом поле курсор всегда отображается в левом верхнем углу. Это, конечно, можно исправить с помощью Padding, но при изменении размеров поля всё поломается. Поэтому приходится помещать TextBox в контейнер и задавать свойства ему, а само текстовое поле просто выравнивать по центру:

Тут HTML выигрывает, потому что в нем не нужно создавать дополнительный элемент.

Однако это всё цветочки по сравнению с тем, что приходится делать, чтобы настроить отображение кнопок (смотрите ниже).

Люблю

Можно использовать стили

В XAML можно использовать стили, дающие большие возможности. Например, есть возможность задать свойства для всех кнопок или списков, а можно создать ключ и выборочно указывать его каким-то элементам.

Стили могут наследоваться, и в них можно менять свойства в зависимости от состояния элемента:

Можно даже создать триггер, который будет срабатывать, если пользователь введет определенное значение. Ну и, конечно, можно указывать обработчики событий.

Ненавижу

Иногда со стилями приходится возиться

Есть и обратная сторона. Например, одному элементу можно задать только один стиль. В HTML же можно указывать сразу несколько классов, к которым стиль будет применен.

Также, если у стиля установлен TargetType, ему нельзя указать ключ, и, следовательно, от него нельзя наследовать. Это очень неудобно, если нужно не только задать свойства всем элементам TextBlock, но и наследовать их для дальнейшего использования.

Тогда приходится писать что-то такое:

То есть создавать три стиля вместо двух.

Люблю

Можно использовать шаблоны

Работа со списками в XAML — это чудо. Можно указать как источник элементов коллекцию объектов, а потом вывести их по шаблону:

Вот сами объекты, коллекция и вывод источника:

А таким будет вывод:

Написав один раз хороший шаблон, можно почти не возвращаться к нему — только если понадобится вывести новое свойство или изменить дизайн.

Ненавижу

Иногда использования шаблонов не избежать

Иногда использование шаблонов — это необходимость, без которой не обойтись. Например, нужно очень постараться, чтобы кнопка при наведении меняла цвет так, как надо:

Это очень большой код, поэтому бесит, когда приходится писать его в каждом проекте. Для сравнения, вот как это делается в CSS:

Люблю

Можно использовать привязку данных

Еще одна крутая штука — привязка данных. Можно в качестве значения текстового поля указать название свойства объекта — и, когда пользователь изменит текст, изменится и объект:

Можно привязать это же свойство к другому элементу, который тоже будет меняться:

И вот что получится в результате:

Ненавижу

В некоторые аспекты сложно вникнуть

Привязка данных позволяет значительно сократить код и избавить разработчика от решения многих задач. Но проблема в том, что использовать привязку бывает очень сложно. Чаще всего потому, что не всегда понятно, из-за чего вывод работает некорректно. А причин может быть много:

  • неправильно указана привязка;
  • не указан DataContext;
  • передается пустой объект и так далее.

Также каждый раз приходится имплементировать интерфейс INotifyPropertyChanged и писать повторяющийся код для каждого класса, об изменении которого нужно уведомлять.

Люблю

Один язык разметки для всех платформ

Еще одна крутая особенность — кроссплатформенность. XAML используется не только в WPF, но и в Xamarin.Forms. Это позволяет разработчикам ПО для компьютеров быстро начать создавать мобильные приложения.

Так, можно один раз написать интерфейс, который будет работать на Android, iOS и UWP (Windows 10). При этом XAML скомпилируется в нативный код для этих платформ.

Ненавижу

XAML в WPF! = XAML в Xamarin.Forms

Только начинаешь вникать в Xamarin.Forms, как XAML делает удар под дых — это не тот XAML, который ты любишь и знаешь.

Можно, конечно, стерпеть, что у некоторых элементов другие названия. Например, что StackPanel превращается в StackLayout. Можно даже привыкнуть к тому, что для одних целей используются разные элементы. Например, в Xamarin.Forms текст выводится с помощью Label, а не TextBlock.

Но самое интересное начинается, когда пытаешься добавить привязку данных, потому что она делается совсем не так, как ты привык. Можно потратить несколько часов, пока не осознаешь, что ты пытаешься использовать MVVM, а нужно — MVVMCross.

Заключение

XAML — это крутая технология, которую есть за что любить, но есть и за что ненавидеть. Поэтому разработка превращается в эмоциональные качели: сначала ты счастлив, что всё так просто и удобно, а потом тратишь на реализацию небольшой, казалось бы, фичи несколько часов.

Однако, проработав достаточно долго как с HTML, так и с XAML, я все равно выберу второй. Потому что с ним я каждый раз уверен, что все работает так, как мне нужно, и никак не зависит от внешних факторов.

Язык декларативного программирования xaml скачать бесплатно

В этой статье я расскажу Вам о новом XML подобном языке создания пользовательских интерфейсов под названием XAML(eXtensible Application Markup Language).

За последние двадцать лет мир изменился.
— Билл Гейтс (1995)

Введение

В этой статье я расскажу Вам о новом XML подобном языке создания пользовательских интерфейсов под названием XAML(eXtensible Application Markup Language). Как Вам, наверное, уже известно, в будущей версии Microsoft Windows под кодовым названием «Longhorn» .NET Framework будет тесно интегрирован в систему и заметно расширен в функциональности. Выпуск «Longhorn» — поистине революционное событие, сравнимое по значимости разве что с выходом первых версий Windows .Но одновременно состоится и переход на 64 битную архитектуру. Поэтому все существующие неуправляимые(unmanaged) 32 битные приложения придется перекомпилировать, а в некоторые вносить существенные изменения. Тем более что Microsoft не планирует развивать существующий Windows API. Из этого следует, что уже сейчас .NET Framework может стать стандартом де-факто в разработке приложений для Windows, так как это единственный способ сохранения инвестиций в программное обеспечение в долгосрочном периоде. Вместе с тем основные новшества Windows «Longhorn» ,скорее всего, будут доступны только из управляемого кода. Делайте выводы.

Однако нельзя забывать и о том, что большинство пользователей, не станут переходить на Windows «Longhorn» сразу после выхода. Этот процесс может занять значительное время, так как это потребует модернизации всего оборудования. А модернизация — дело дорогостоящее. Поэтому в Microsoft решили одновременно с «Longhorn» выпустить и обновление для Windows XP SP2 и Windows Server 2003, которое будет включать в себя многие новшества Windows «Longhorn», что использовать одно и то же ПО, без внесения каких-либо изменений.

Предвкушая Ваши ожидания, сразу скажу, что уже сейчас появилась возможность «пощупать» своими руками то, о чём я говорил выше. Открыт публичный доступ к 2004 Avalon Community Technology Preview. Теперь можно писать приложения, использующие XAML, не под одной из beta версий Windows «Longhorn»,а под уже знакомой Windows XP.

Итак, вот что нам потребуется:

Что такое Avalon?
Avalon — это рабочее название новой графической подсистемы (presentation subsystem) Windows. Он содержит движок отображения и основанный на managed-коде Framework. Avalon унифицирует отображение и манипуляцию документами, мультимедиа-контентом и пользовательским интерфейсом. Он позволяет разработчикам и дизайнерам создавать богатый и современный GUI.

Ну что скачали? Теперь запускаем инсталлятор November 2004 Avalon CTP. После установки откроется папка, в которой будет лежать файл en_winfx_sdk_ctp.iso — это образ CD. Воспользовавшись программой для записи с поддержкой iso образов, мы получим диск с инсталляций. Вставляем его, и первым делом устанавливаем .Net Framework v2.0 Beta 1, если конечно он у Вас уже не стоит, как было в моём случае. Далее идёт «Avalon» Community Technology Preview, а после него (обратите внимание, что порядок в данном случае важен) Visual C# Express или Visual Basic.NET Express. Потом WinFX™ SDK — «Avalon» Community Technology Preview Edition. В заключении, переходим в папку, куда мы инсталлировали November 2004 Avalon CTP (по умолчанию C:Documents and SettingsИМЯ_УЧЁТНОЙ_ЗАПИСИMy DocumentsMSDNPublic November 2004 Avalon CTP Release) и запускаем ConfigureAvalonForExpressSKUs.bat. В результате в выбранной Вами среде разработки(Visual C# Express или Visual Basic.NET Express) появятся новые шаблоны проектов. Всё, инсталляция окончена, можно приступать к работе.

Читать еще:  Программа для программирования игр на русском

Первая XAML программа

Что такое XAML?
Типичное приложение можно рассматривать как набор страниц, содержащих некий процедурный код. Страницы пишутся на новом языке декларативной разметки под кодовым названием «XAML». С помощью XAML-элементов вы управляете разметкой каждой страницы, в том числе выводом текста и изображений, а также вставкой интерактивных компонентов вроде кнопок и текстовых полей. Если коротко, то XAML — это язык, применяемый для декларативного рендеринга пользовательского интерфейса страниц, из которых состоит приложение.

По уже сложившейся традиции первой программой будет пресловутый «Hello World» (Здесь и далее я буду использовать Visual C# Express. Но Вы можете скачать пример и для Visual Basic.Net, в любом случае XAML код для всех сред разработки будет один и тот же).

Итак, запускаем Visual C# Express, выбираем File->New->Project, а в появившемся окне «Avalon Application».

Взглянем на «Solution Explorer», в данный момент нас интересуют только два файла: Window1.xaml и Window1.xaml.cs. (Рис.1) Это чем-то напоминает текущую версию ASP.NET, когда весь графический интерфейс помещается в одном XML файле (в нашем случае Window1.xaml), а код в другом (Window1.xaml.cs). В принципе, уже сейчас можно компилировать проект, но я рекомендую все-таки внести некоторые изменения.

Рисунок 1. Нужные нам файлы.

Откроем файл Window1.xaml. Там содержится код окна, если Вы не знакомы с синтаксисом и основными понятиями XML, то лучше всего сначала прочитать какую-либо статью на эту тему.

Элемент ,как не трудно догадаться, представляет собой окно, x:Class = » AvalonApplication1.Window1 — это указание пространства имён и класса, к которому данное окно принадлежит. Если мы откроем Window1.xaml.cs, то увидим там реализацию данного класса. Далее слудует указание на то, что мы имеем дело с языком XAML и другая служебная информация xmlns:x = » Definition «. Атрибут Text — это заголовок окна. Добавим ещё несколько атрибутов Height — высота, Width — ширина, Left и Top соответственно отвечают за положение окна на экране. Об атрибуте ID стоит поговорить отдельно. Он есть практически у всех элементов, фактически это имя элемента, которое мы будем использовать в коде. Вот как будет выглядеть отредактированный нами файл (уберём ):

Итак, что мы имеем на данный момент? Пустое окно конечно хорошо, но всегда хочется большего. Первым делом добавим контейнер для всех остальных элементов управления. За это отвечает не только , но в данном примере я предпочёл использовать именно его. У него есть ряд атрибутов, в частности Background задаёт фоновый цвет.

Теперь пришло время поместить что-то на Canvas, например кнопку. За это отвечает элемент Button . Вот как будет выглядеть код формы после всех манипуляций:

На рисунке 2 можно видеть, что у нас получилось в итоге.

Рисунок 2. После компиляции.

Модель событий

На данный момент наше приложение не реализует никакой функциональности, ну так давайте создадим обработчик нажатия кнопки. Для этого добавим в элемент Button событие Click , в котором зададим функцию обработчик. Чтобы не писать лишнего сразу приведу код кнопки:

Теперь откроем Window1.xaml.cs и добавим в класс Window1 функцию onButtonClick

Вот как это должно выглядить:

public partial class Window1 : Window

Думаю, ничего разъяснять тут не надо, параметры стандартны.

Теперь добавим код, чтобы при нажатии на кнопку текст на ней менялся. Делается это очень просто, только свойства Text уже нет, вместо него используется Content :

Вот и всё. Таким же способом можно создавать обработчики и для других событий. Особое внимание следует уделить тому, что названия многих свойств и событий не совпадают с используемыми сейчас в Windows.Forms. Изменились и сборки, а соответственно и пространства имён. Хочется уточнить, что все XAML элементы — это классы, которые доступны и обычным образом из кода на C# и Visual Basic. Эти классы содержатся в пространстве имён System.Windows; (в следующих версиях это может измениться) и соответственно в сборке WindowsBase.dll. В обычных же приложениях мы можем комбинировать классы из System.Windows и System.Windows.Forms, применяя то, что наиболее подходит в конкретной ситуации.

Заключение

В данной статье я постарался в наиболее доступной и понятной форме описать основы работы с XAML. Элементарный пример, использованный мной, открывает дорогу к новым изысканиям в данной области. В следующих частях я расскажу про основные элементы управления, работу с текстом и графикой. А также про новую систему установки приложений под названием ClickOnce.

Краткое знакомство с моделью программирования XAML

Файлы к данному курсу Вы можете скачать здесь.

Цель лекции: показать читателям предпосылки возникновения модели декларативного программирования XAML , разобрать основополагающие элементы XAML (контейнеры, элементы управления , службы документов, графические примитивы), а так же кратко познакомить с текущей поддержкой языка XAML , и моделью программирования.

Краткий экскурс в историю графических интерфейсов пользователя

Человечество проделало огромный путь в технологиях создания пользовательского интерфейса. Когда-то, на заре компьютерной эры, единственный интерфейс пользователя составляла колода перфокарт, которые программист загружал в компьютер , и бумажная лента, которую компьютер ему выдавал. Первым революционным шагом стало появление консоли, что автоматически (хотя и далеко не сразу) привело к смене парадигмы общения компьютера и пользователя с пакетной обработки к интерактивной. Довольно долго консоли были текстовыми, и пользовательский интерфейс , в основном, сводился к вопросам и ответам. Однако и в консоли со временем появились довольно богатые интерфейсы, использовавшие возможности псевдографики.

В то же время становится популярной Windows , что в очередной раз меняет подходы к созданию интерфейсов. Windows предложила набор стандартных элементов управления (или, общепринятое, «контролов»), а также API для работы с ними. Это позволило приложениям выглядеть одинаково с системными, не говоря уже о существенном облегчении в программировании UI, т.к. большую часть труда взяла на себя система.

Поначалу набор контролов был недостаточен, а API вызывало много нареканий, но с развитием Windows положение вещей улучшалось. Кроме того, появилось много альтернатив низкоуровневому API Windows . В частности, можно упомянуть «родные» Microsoft’овские технологии MFC и ATL , которые были интегрированы со средством разработки Microsoft – Visual Studio. С помощью этих технологий можно разрабатывать интерфейсы в объекто-ориентированном стиле, кроме того, в них реализован шаблон (» паттерн «) model-view-controller, позволяющий разделить представление и данные. Стоит упомянуть и другие технологии, такие как кроссплатформенная Qt и, конечно же, Java c ее AWT и Swing .

Параллельно с появлением и развитием технологий, подобных MFC , появились и стали развиваться технологии для работы с продвинутой графикой. Так, в 1995-м году в одноименной системе Windows 95 появилась технология DirectX , облегчающая работу по созданию игр и мультимедиа-приложений. За 3 года до Microsoft’овского DirectX появилась технология OpenGL компании Silicon Graphics . Точнее сказать, это стандарт, выработанный несколькими компаниями (и, в частности, Microsoft), выросший из разработки Silicon Graphics . В отличие от DirectX , OpenGL является кросс-платформенным и стандартным. Нас же интересует то, что развитие графических технологий с этого времени шло параллельно с развитием технологий создания «обычного» UI.

Наконец, надо упомянуть и третью ветвь развития UI, появившуюся примерно в то же время – UI сначала веб-страниц, потом и веб-приложений. Поначалу это был чистый HTML , потом как грибы после дождя стали появляться многочисленные технологии вроде Java -апплетов, flash-приложений и т.п. Наконец, с выходом Microsoft. NET появились технологии Windows Forms и ASP . NET .

Итак, с точки зрения UI у нас существует три разных типа приложений, каждый из которых имеет свой набор технологий для реализации. И одной из предпосылок создания WPF является идея интеграции подобных технологий в одной. Идея интеграции всего со всем вообще является доминирующей последние годы. Кроме того, текущей графической платформе Windows уже 20 лет. Это прекрасно, но, учитывая ошеломительное развитие аппаратных графических средств (видеокарт и разнообразных графических ускорителей ), потенциально мы могли бы использовать всю их мощь не только в приложениях типа игр, но и в обычных приложениях. Мешает нам только то, что с помощью привычных технологий типа MFC или Windows Forms крайне трудно сделать изощренный интерфейс , а тратить время на создание оного с помощью DirectX или OpenGL представляется малоосмысленным. Таким образом, одной из целей создания WPF было предоставить преимущества современных аппаратных графических средств более широкой аудитории разработчиков.

Наконец, еще одной предпосылкой появления WPF стала неудовлетворенность текущей схемой общения дизайнера и разработчика при создании UI. Это мы обсудим чуть позже в данной лекции.

Windows Presentation Foundation – три в одном

WPF – графическая подсистема , основанная на управляемом коде. WPF является надстройкой над DirectX , что дает приложениям, написанным с её помощью, богатые возможности по отрисовке. Эта технология объединяет в себе три мира, перечисленные ранее, – UI для настольных и веб-приложений, и UI для игр и мультимедиа-приложений. WPF содержит в себе множество элементов управления, поддержку видео, анимации, трехмерных изображений и т.п.

Читать еще:  Безопасная загрузка win 10

Надо отметить, что WPF – это не только диалоги, картинки и видео. Кроме прочего, WPF включает в себя также синтез и распознавание речи. Более полный список того, что поддерживается WPF:

  • 2D
  • 3D
  • Работа с текстами и шрифтами
  • Работа с изображениями
  • Эффекты
  • Аудио
  • Видео
  • Анимация и работа с временными интервалами

Декларативное программирование UI и XAML

Одной из идей WPF является то, что программирование UI хочется сделать как можно более декларативным. В самом деле, почему размеры и расположение элементов управления, реакцию на всякие события и т.п. надо реализовывать в коде, если эта информация известна заранее? Эти соображения привели разработчиков WPF к идее использовать XML для описания пользовательского интерфейса. Стандарт называется XAML (eXtensible Application Markup Language ), и файл на нем выглядит примерно так:

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

Идея использовать XML для описания UI не нова. Достаточно популярен язык разметки XUL ( XML User Interface Language ). XUL является частью среды разработки кросс-платформенных интерфейсов, известной как XPFE. Это полнофункциональный язык разметки , на объекты приложений, такие как окна, метки и кнопки.

C помощью XAML описывается, прежде всего, пользовательский интерфейс . Логика приложения по-прежнему управляется процедурным кодом (С#, VB и т.д.).

XAML может использоваться как для браузер -базированных приложений, так и для локальных настольных приложений. Немаловажной деталью является легкость XAML для локализации UI. Если раньше для этих целей использовали специальные механизмы вроде таблицы строк, загрузки строк из ini-файлов, ресурсные dll или же специальных утилит «вытаскивания» строк, то с появлением XAML , хранящего все строчки UI в текстовом виде, локализация значительно упрощается.

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

Основы модели UI и XAML

Интерфейс пользователя WPF-приложения задается XAML . C XAML может быть связан скомпилированный code-behind код (что может вызвать легкое ощущение дежавю у знакомых с моделью ASP . NET ). Например, если страница вашего приложения описывается файлом page. xaml , то code-behind, как правило, будет храниться в page. xaml .cs. Codebehind может содержать реакцию на различные события, генерируемые пользовательским интерфейсом (такие как нажатие клавиши мыши или «наезд» указателя мыши на элемент управления). Одной из светлых целей такого разделения является написание одного кода для всех типов приложений (то есть, ваш код можно было бы скомпилировать и как настольное приложение , и как приложение , просматриваемое с помощью браузера, и как smart client- приложение ).

Т.к. XAML – это «нормальный» XML , то он подчиняется всем правилам wellformed XML , в частности, содержит ровно одну корневую вершину и является деревом. На вершине иерархии находится один из контейнерных объектов. Внутри этих объектов располагаются знакомые нам элементы управления и другие контейнеры. Набор элементов управления, без сюрпризов, очень похож на «старый добрый» набор контролов Win32. Это кнопки, меню , текст, картинки и т.п. Но на самом деле каждый тег XAML соответствует классу модели, который, в свою очередь , имеет набор свойств, методов и событий. В соответствие с этими членами класса вы можете настраивать ваш XAML -код. Во время исполнения именно экземпляры этих классов создаются рантаймом для того, чтобы отобразить то, что вы указали в XAML , – очень похоже на ASP . NET и его серверные контролы.

Элементы XAML

Основное деление элементов XAML таково:

  • Контейнеры (панели)
  • Элементы управления
  • Службы документов (document services)
  • Графические примитивы

Панели

С помощью панелей вы можете располагать содержащиеся внутри них элементы. Среди стандартных панелей есть Canvas (дочерние элементы размещаются с использованием относительных координат), DockPanel (панель, в которой дочерние элементы стыкуются), FlowPanel (напоминает джавский FlowLayout, где элементы выводятся в ряд друг за другом), GridPanel (табличная организация сыновей) и некоторые другие. Естественно, вы можете определять свои типы панелей. Пример панели:

На этой панели будет создано три кнопки, состыкованные друг с другом по горизонтали. Обратите внимание на указание соответствующего пространства имен в элементе верхнего уровня.

Элементы управления

Элементы управления, как уже было сказано, во многом уже знакомы программистам Win32 и WinForms. Все они унаследованы от типа Control , среди них есть старые добрые комбобоксы, листбоксы, меню, скроллбары, слайдеры, и т.п., а есть и новые контролы наподобие RadioButtonList . XAML однако же дает вам невероятную гибкость в настройке свойств этих контролов (то, чего ранее можно было добиться только нелегким трудом ручной отрисовки owner draw). Так, например, чтобы нарисовать кнопку с изображением (что, правда, стало несложно и во второй версии WinForms), в WPF надо всего лишь написать

Вы можете задавать различные цвета, кисти, градиентные заливки и даже сделать кнопку с чек-боксом на ней!

Графические примитивы

С ними все понятно, набор весьма стандартен – Ellipse, Line, Rectangle, Path, Polygon, Polyline , для которых можно использовать заливки (Fill) и штрихи (stroke), причем всё это можно рисовать разными кистями, использовать градиенты, устанавливать толщину линий и т.п. Кто работал в векторных редакторах наподобие Macromedia Flash или Adobe Illustrator, тому эти возможности знакомы.

Графические примитивы не имеют дочерних элементов и обычно содержатся внутри панели Canvas, например:

нарисует обычную линию красного цвета из 0,0 в 100, 200 (в локальных координатах панели).

Службы документов

В то время как традиционная веб-страница имеет непрерывное представление, отображая весь контент в одном едином блоке, сервисы управления документами предоставляют вам удобные возможности разбивать контент на страницы, масштабировать содержимое, адаптировать документы под специфические особенности дисплея пользователя и т.д. Еще один шаг, приближающий веб-интерфейс к привычному интерфейсу настольных приложений.

Преобразования и анимация

С помощью XAML вы можете определить различные преобразования (трансформации) над элементами интерфейса. Среди стандартных преобразований есть:

  • RotateTransform – поворот на указанный угол
  • TranslateTransform – сдвиг на указанные смещения
  • ScaleTransform – растягивание или сужение в указанное количество раз
  • SkewTransform – искажение на указанные углы относительно указанного центра
  • MatrixTransform – любое аффинное преобразование
  • TransformCollection – суперпозиция нескольких преобразований

Например, вы можете повернуть обычную надпись с помощью единственного преобразования:

или отобразить список (ListBox) с помощью нескольких преобразований, объединенных TransformCollection , так, что он будет растянут и перевернут:

Программирование на XAML

Здесь мы расскажем о технологии программирования с использованием XML-подобного языка для создания пользовательских интерфейсов под названием XAML(eXtensible Application Markup Language). Как Вам, наверное, уже известно, в последних версиях Microsoft Windows 7-10 .NET Framework тесно интегрирован в систему и заметно расширен в функциональности. Одновременно в них произведен переход на 64 битную архитектуру. Поэтому все старые неуправляимые (unmanaged) 32 битные приложения придется перекомпилировать, а в некоторые вносить существенные изменения. Тем более что Microsoft не планирует развивать старый Windows API. Из этого следует, что уже сейчас .NET Framework может стать стандартом де-факто в разработке приложений для Windows, так как это единственный способ сохранения инвестиций в программное обеспечение в долгосрочном периоде. Вместе с тем основные новшества Windows Vista / 7 доступны только из управляемого кода.

C 2004 года открыт публичный доступ к Avalon Community Technology Preview. Теперь можно писать приложения, использующие XAML под уже знакомой Windows XP.

Итак, вот что нам потребуется:

Что такое Avalon?

Avalon — это рабочее название новой графической подсистемы (presentation subsystem) Windows. Он содержит движок отображения и основанный на managed-коде Framework. Avalon унифицирует отображение и манипуляцию документами, мультимедиа-контентом и пользовательским интерфейсом, позволяет разработчикам и дизайнерам создавать богатый и современный GUI.

Ну что скачали? Теперь запускаем инсталлятор November 2004 Avalon CTP. После установки откроется папка, в которой будет лежать файл en_winfx_sdk_ctp.iso — это образ CD. Воспользовавшись программой для записи с поддержкой iso образов, мы получим диск с инсталляций. Вставляем его, и первым делом устанавливаем .Net Framework v2.0 Beta 1, если конечно он у Вас уже не стоит, как было в моём случае. Далее идёт «Avalon» Community Technology Preview, а после него (обратите внимание, что порядок в данном случае важен) Visual C# Express или Visual Basic.NET Express. Потом WinFXT SDK — «Avalon» Community Technology Preview Edition. В заключении, переходим в папку, куда мы инсталлировали November 2004 Avalon CTP (по умолчанию C:Documents and SettingsИМЯ_УЧЁТНОЙ_ЗАПИСИMy DocumentsMSDNPublic November 2004 Avalon CTP Release) и запускаем ConfigureAvalonForExpressSKUs.bat. В результате в выбранной Вами среде разработки(Visual C# Express или Visual Basic.NET Express) появятся новые шаблоны проектов. Всё, инсталляция окончена, можно приступать к работе.

Читать еще:  Программирование в ворд

Первая XAML программа

Что такое XAML?
Типичное приложение можно рассматривать как набор страниц, содержащих некий процедурный код. Страницы пишутся на новом языке декларативной разметки под кодовым названием «XAML». С помощью XAML-элементов вы управляете разметкой каждой страницы, в том числе выводом текста и изображений, а также вставкой интерактивных компонентов вроде кнопок и текстовых полей. Если коротко, то XAML — это язык, применяемый для декларативного рендеринга пользовательского интерфейса страниц, из которых состоит приложение.

По уже сложившейся традиции первой программой будет пресловутый «Hello World» (Здесь и далее я буду использовать Visual C# Express. Но Вы можете скачать пример и для Visual Basic.Net, в любом случае XAML код для всех сред разработки будет один и тот же).

Итак, запускаем Visual C# Express, выбираем File->New->Project, а в появившемся окне «Avalon Application».

Взглянем на «Solution Explorer», в данный момент нас интересуют только два файла: Window1.xaml и Window1.xaml.cs. (Рис.1) Это чем-то напоминает текущую версию ASP.NET, когда весь графический интерфейс помещается в одном XML файле (в нашем случае Window1.xaml), а код в другом (Window1.xaml.cs). В принципе, уже сейчас можно компилировать проект, но я рекомендую все-таки внести некоторые изменения.

Рисунок 1. Нужные нам файлы.

Откроем файл Window1.xaml. Там содержится код окна, если Вы не знакомы с синтаксисом и основными понятиями XML, то лучше всего сначала прочитать какую-либо статью на эту тему.

Элемент ,как не трудно догадаться, представляет собой окно, x:Class = » AvalonApplication1.Window1 — это указание пространства имён и класса, к которому данное окно принадлежит. Если мы откроем Window1.xaml.cs, то увидим там реализацию данного класса. Далее слудует указание на то, что мы имеем дело с языком XAML и другая служебная информация xmlns:x = » Definition «. Атрибут Text — это заголовок окна. Добавим ещё несколько атрибутов Height — высота, Width — ширина, Left и Top соответственно отвечают за положение окна на экране. Об атрибуте ID стоит поговорить отдельно. Он есть практически у всех элементов, фактически это имя элемента, которое мы будем использовать в коде. Вот как будет выглядеть отредактированный нами файл (уберём ):

Итак, что мы имеем на данный момент? Пустое окно конечно хорошо, но всегда хочется большего. Первым делом добавим контейнер для всех остальных элементов управления. За это отвечает не только , но в данном примере я предпочёл использовать именно его. У него есть ряд атрибутов, в частности Background задаёт фоновый цвет.

Теперь пришло время поместить что-то на Canvas, например кнопку. За это отвечает элемент Button . Вот как будет выглядеть код формы после всех манипуляций:

На рисунке 2 можно видеть, что у нас получилось в итоге.

Рисунок 2. После компиляции.

Модель событий XAML

На данный момент наше приложение не реализует никакой функциональности, ну так давайте создадим обработчик нажатия кнопки. Для этого добавим в элемент Button событие Click , в котором зададим функцию обработчик. Чтобы не писать лишнего сразу приведу код кнопки:

Теперь откроем Window1.xaml.cs и добавим в класс Window1 функцию onButtonClick

Вот как это должно выглядить:

public partial class Window1 : Window

Думаю, ничего разъяснять тут не надо, параметры стандартны.

Теперь добавим код, чтобы при нажатии на кнопку текст на ней менялся. Делается это очень просто, только свойства Text уже нет, вместо него используется Content :

Каковы реальные преимущества языков декларативного интерфейса, таких как XAML и QML?

В настоящее время я оцениваю QtQuick (комплект создания пользовательского интерфейса Qt), который будет выпущен как часть Qt 4.7. QML — это декларативный язык, основанный на JavaScript, за QtQuick.

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

  • Скорость разработки
  • Сила разделения между представлением и логикой
  • Улучшенная интеграция между кодировщиками и дизайнерами
  • Изменения в пользовательском интерфейсе не требуют повторной компиляции

Кроме того, есть ли недостатки? Несколько потенциальных проблем, вызывающих озабоченность, spring:

  • Скорость выполнения
  • Использование памяти
  • Добавленная сложность

Есть ли какие-либо другие соображения, которые следует учитывать?

(обновлено)

Заблуждение XAML заключается в том, что оно не скомпилировано. Он действительно скомпилирован с BAML двоичным пред-обозначенным XAML. По-видимому, была скомпилированная версия XAML, также называемая CAML. OP указал мне на эту хорошую статью, объясняющую, что такое XAML/BAML и CAML.

В любом случае, на вопрос, зачем его использовать:

XAML — это просто формат Serialization для объектов С#, который особенно хорошо подходит для описания иерархических структур объектов, например, найденных в графических интерфейсах WPF.

Что WPF поможет вам сделать, это написать менее скучный код на С# следующим образом:

и просто выразить это более читаемым способом следующим образом:

Так как вложенность объектов WPF (помещая материал внутри других объектов) может быть очень глубокой, WPF упрощает чтение, чем полученный С# -код.

Что касается разделения проблем: XAML помогает здесь, так как он позволяет вам только выражать объекты и их отношения/свойства, а не логику. Это заставляет вас отделять логику от макета пользовательского интерфейса. Шаблон MVVM очень хорошо подходит для этой задачи и позволяет тестировать eey и взаимозаменяемые виды.

Добавленная сложность в XAML также может быть легко отклонена, потому что тот же код на С# становится более сложным, чем разметка XAML.

Я не могу дать вам никакого понимания QTQuick. К сожалению

QtQuick расширяется с помощью плагинов С++, на самом деле то, что ребята Qt рекомментируют, заключается в том, что вы выполняете пользовательский интерфейс, анимацию, переходы и т.д. в QtQuick/QML, в то время как вся ваша бизнес-логика находится в С++/Qt. Таким образом, таким образом вы получаете лучшее из обоих миров, вы можете отлаживать свой код на С++, как обычно, и в то же время создание пользовательских интерфейсов становится легким и чрезвычайно простым.

Еще одно важное соображение о QtQuick/XAML заключается в том, что они аппаратно ускорены, так что, например, вы можете получить довольно хорошие fps без каких-либо усилий. Таким образом, они не замедляют то, что они намереваются выполнить.

Это экономит время, много времени. Я сделал пользовательский интерфейс с кодом через 3 дня, сделал то же самое в QML через 2 часа.

Точка декларативного кодирования, то есть WPF или QTQuick, должна обеспечивать разделение между разработчиком и, предположительно, художником, который реализует визуальные аспекты вашего приложения. Что касается WPF, я считаю, что отладка становится немного сложнее. Когда мы говорим, я компилирую последний QT, чтобы посмотреть QTQuick. (Это занимает много времени, и у меня есть время посмотреть на stackoverflow:-)) Итак, у меня пока нет мнения.

  • Отлично подходит для шаблона MVVM
  • Аппаратное ускорение (QML с использованием OpenGL для ОС Windows, MAC, Linux и телефонов) XAML с использованием DirectX для Windows и его версии телефона)
  • Ближе к художникам
  • Вы можете создать GREAT и NICE UI, используя XAML/QML
  • Простая реализация пользовательского интерфейса
  • Приятная анимация возможна
  • В XAML обычно вы можете создать версию приложения Silverlight с небольшими изменениями
  • В XAML есть несколько замечательных функций, таких как Template, Trigger (DataTrigger, Trigger, EventTrigger), Binding (с любой стороны, а также обе стороны вместе), Resource, Commands, DependencyProperty и Notifiable Properties.

Но обратите внимание на XAML: (Я программист XAML, поэтому у меня нет точек для QML)

  • Отладка XAML невозможна
  • Для любого изменения в XAML вся программа должна быть перекомпилирована

Будьте более внимательны к производительности. Например, если вы используете очень много RoutedCommands в XAML, ваше приложение будет непригодным для использования!

В XAML некоторая функция работает не так, как ожидалось. К сожалению, некоторые трюки. (Должно быть ясно… должно работать так, как ожидалось… не так ли?)

Будьте осторожны с некоторыми подобными пространствами имен, такими как BitmapEffect и Effect. Существуют разные функции и затраты. (например, BitmapEffect имеет некоторые эффекты с программным рендерингом, а эффект оказывает некоторое влияние на аппаратную визуализацию)

В реальном мире художники не могут использовать WPF как Flash (по крайней мере, с хорошей производительностью).

Некоторые функции работают в специальных местах. Например, DataTrigger работает только в теге Style, а не в разделе Resource.

В XAML есть некоторые недостатки. Некоторые примеры: нет никакой последовательной анимации… вы не можете делать какие-либо вычисления в XAML (вы должны написать конвертер на С# даже для работы liiiittle! JavaSript — отличная замена в QML)… некоторые атрибуты дублируются. например x: Имя и имя… Контроль представления из ViewModel не ясен. например закрытие View from ViewModel (вам нужен код CodeBehind)

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector