Серж Десмедт
Стоит ли мне изучать XAML?
Я наконец-то скачал бета-версию WinFX и был весьма взволнован тем, что начал экспериментировать с ним. Я действительно хотел испачкать руки в XAML.
Должен сказать, что сначала я был немного разочарован. Позвольте мне объяснить.
С помощью этого материала можно реализовать множество функций. Но если вы хотите получить действительно интересные вещи, синтаксис XAML может стать довольно сложным. Поэтому я полагаю, что со временем появятся инструменты, которые автоматизируют этот процесс и избавят меня от необходимости знать синтаксис XAML. Верно?
Но тогда зачем нам нужен XAML? Как дизайнеру интерфейсов, мне все равно, что производит мой инструментарий, будь то простой код или какой-то синтаксис XML.
Но если подумать, я понимаю, почему разработчики инструментов будут в восторге. Если разработчик инструмента генерирует код (например, C#), который при компиляции создает мой тщательно продуманный интерфейс, то компоновка этого кода полностью принадлежит разработчику инструмента. Если у меня, как у пользователя, есть другой инструмент от другого разработчика, то этот код не является прозрачным для первого инструмента. Посмотрите на код, вставленный дизайнером форм Visual Studio, и вы поймете, что я имею в виду. Как сгруппирован код? Объявил ли разработчик инструмента сначала все переменные, затем построил объекты, а затем назначил все свойства, ИЛИ он объявил, построил и настроил каждый элемент управления последовательно.
Сначала сконструируйте переменные, а затем назначьте свойства:
Построить и назначить каждый элемент управления
Разбирает ли инструментальный разработчик код разумно, или он использует комментарии, чтобы найти свой код, и с этого момента разбирает код, используя свои знания о том, как он построил код в первую очередь (см. код, сгенерированный мастерами MFC). Потому что если другой разработчик инструмента изменит его код (потому что этот разработчик интеллектуально разбирает код), он не сможет правильно разобрать этот код.
С XAML таких проблем нет:
XAML определяет (упрощение !!) элементы управления как узлы XML, а свойства как атрибуты. Никаких переменных не нужно. Все в одном месте. Если разработчик инструмента хочет изменить какой-то атрибут элемента управления, XMLSchema и XPath определяют, как его искать, а XAML определяет значения, которые можно применить. Это ограничивает выбор для разработчика инструмента, делая вещи более совместимыми между разработчиками инструментов. И в конечном итоге это приносит пользу дизайнеру пользовательского интерфейса, поскольку у него появляется больший выбор инструментов для использования.
Именно поэтому я считаю критику Microsoft по поводу того, что она не использует CSS для форматирования, несостоятельной. С CSS вы получаете целый раздел в XML, который является текстом и нуждается в повторном разборе. Никакой навигации к нему с помощью XPath.
И тут возникает вышеупомянутый вопрос: стоит ли мне изучать XAML?
Большинство людей, вероятно, никогда не будут использовать чистый XAML, но тогда, конечно, знать, что делает ваш инструментарий, всегда интересно в процессе отладки… Я полагаю, это то, что отличает “мужчин от мальчиков”.