Код XAML или C # - PullRequest
       126

Код XAML или C #

45 голосов
/ 16 июня 2009

Я не люблю использовать XAML. Я предпочитаю кодировать все на C #, но думаю, что я делаю что-то не так.

В каких случаях лучше использовать XAML и когда вы используете C #? Каков ваш опыт?

Ответы [ 19 ]

2 голосов
/ 03 сентября 2010

XAML и C # - действительно хороший способ отделить логику от дизайна, как уже описано.

Для типичного программиста способ программирования действительно изменяется с помощью WPF, при условии, что программист происходит из C ++, VB, WinForms, ATL и MFC фона, фон из которого пользовательский интерфейс не был настолько естественным, отделен от логики как с XAML и C #.

Чтобы привыкнуть к этому способу программирования, требуется некоторое время, но, приобретая все больше опыта, он становится действительно эффективным.

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

Приложения WPF и C # на основе преимуществ шаблона MVVM:

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

Существует более высокая вероятность того, что в итоге получится более дружественное к пользователю приложение, если человек, имеющий опыт работы с юзабилити, сосредоточится на использовании, а не на техническом решении. О таких примерах есть очень интересная книга Джоэла Спольски «Дизайн пользовательского интерфейса для программистов».

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

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

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

4. Возможность для дизайнеров заинтересовать программистов Наконец, можно реализовать модные приложения в среде Windows. Если вы программист, который интересуется дизайном, Microsoft Expression Blend действительно открывает возможности для изучения и реализации модных, полезных приложений с приятным дизайном.

Хотя может быть риск использования XAML и C #, MVVM или нет, большие возможности и гибкость, которые он предоставляет, также могут быть недостатком. Позволяя программисту расслабиться в этой новой простой среде пользовательского интерфейса, приложения могут получить широкий спектр анимаций, цветов и всего, что предоставляет эта новая среда. Вспоминая, как вы добавили элементы управления UI в среду C ++ и ATL.

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

Ссылка на хороший учебник: Учебник MVVM XAML C #

1 голос
/ 20 июня 2009

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

Для меня использование XAML похоже на использование LINQ. Если я могу написать однострочное утверждение, которое легко прочитать, и позволить фреймворку выбрать лучший способ реализовать то, что я хочу, я чувствую себя хорошо. Я определенно стараюсь, насколько могу, использовать декларации того, что я хочу, вместо того, чтобы жестко программировать, как я хочу, чтобы это было сделано. F # является еще одним хорошим примером этой парадигмы.

1 голос
/ 29 января 2015

Кажется, ни один ответ не упомянул важный момент: https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh465340.aspx

XAML - это просто процедурный код (только проще)

<Grid x:Name="ContentPanel" Margin="12,0,12,0">
    <Button Height="72" Width="160" Content="Click Me" />
</Grid>

"Ниже показано, как этот XAML может быть частично заменен кодом, написанным на C # или Visual Basic."

// Initialize the button
Button myButton = new Button();
// Set its properties
myButton.Width = 160;
myButton.Height = 72;
myButton.Content = "Click Me";
// Attach it to the visual tree, specifically as a child of
// a Grid object (named 'ContentPanel') that already exists. In other words, position
// the button in the UI.
ContentPanel.Children.Add(myButton);

Если вы работали, например, с формами Windows, вы, вероятно, помните, что конструктор форм Windows генерирует файл .designer.cs, содержащий код, аналогичный примеру по ссылке выше. Такой тип декларативного кода гораздо лучше представлен в XAML, чем в C #.

Для любого не игрушечного приложения вы ВСЕГДА должны предпочитать XAML для определения пользовательского интерфейса и подключения его к логике в манере MVVM.

1 голос
/ 16 июня 2009

Я изначально пришел из веб-разработки и сейчас изучаю WPF / Silverlight. Для меня модель XAML имеет для меня гораздо больше смысла, чем WinForms. Я отношусь к XAML, как к HTML, а файлы .cs - как коду.

1 голос
/ 31 января 2012

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

0 голосов
/ 07 мая 2012

Программирование WPF в C # с использованием свободного стиля помогает уменьшить размер и сложность кода. См. этот ответ для примера использования свободного стиля с WPF.

0 голосов
/ 16 июня 2009

Некоторые вещи проще поддерживать или отлаживать в коде.

0 голосов
/ 16 июня 2009

Не упоминать, что вы сможете сделать больше в Xaml2009, что должно быть сделано в коде позади.

К сожалению, BAML не будет полностью поддерживать xaml 2009 в сравнении с периодом 2010 года, поэтому вы не можете скомпилировать xaml в период 2010 года. И придется ждать более поздней версии blend, чтобы выполнить полный цикл разработки. (позже 3)

Douglas

0 голосов
/ 24 июня 2009

XAML можно рассматривать как нечто похожее на комбинацию XHTML и CSS или XML и XSL, которые используются для структуры и дизайна. Любая форма логики должна быть в C #. Таким образом, структура и дизайн отделены от логики. При использовании этого подхода ваш код тоже должен быть чище. Еще один положительный момент заключается в том, что задачи легче разделить между дизайнерами и программистами.

Еще одна вещь ... это определение XAML из MSDN:

Расширяемый язык разметки приложений (XAML) - это язык разметки для декларативного программирования приложений. Windows Presentation Foundation (WPF) реализует загрузчик расширяемого языка разметки приложений (XAML) и обеспечивает поддержку языка расширяемого языка разметки приложений (XAML) для типов Windows Presentation Foundation (WPF), так что вы можете создавать большую часть пользовательского интерфейса приложения в расширяемой разметке приложений. Языковая (XAML) разметка. Кроме того, SDK включает в себя инструмент редактирования расширяемого языка разметки приложений (XAML) под названием XAMLPad. Этот инструмент можно использовать для экспериментов с расширяемым языком разметки приложений (XAML) в режиме реального времени.

Ссылка на цитату.

...