2012-01-07 4 views
3

Я хочу изучить C#, и кажется, что все переключаются с WinForms на использование WPF. Приложения WPF для меня намного сложнее из-за использования файлов .XAML, которые используются для создания форм.Приложение WPF требует использования XAML?

Я просто спрашиваю, прежде чем я действительно вовлечен, являются ли файлы XAML единственным способом создания приложений WPF? Есть ли более простой способ? Я знаю, что мог бы просто научиться использовать WinForms, который кажется намного проще, поскольку у вас в основном есть объект Form, который вы работаете с кодом, но, как я уже говорил, лучше всего создавать приложения WPF.

+3

Если вам нравится WinForms, используйте их. Не переключайтесь, потому что он популярен, переключитесь, только если вы получите от него какую-то выгоду. – JohnFx

+0

Если вы намереваетесь изучить WPF, я бы рекомендовал MSDN как * * ресурс. В [обзор WPF] (http://msdn.microsoft.com/en-us/library/ms754130.aspx), и все страницы, на которые он ссылается, вы найдете самые важные вещи, которые вам понадобятся. –

ответ

9

XAML делает вещи много проще, если вы знаете, как использовать его, потому что он более читабельный и декларативный, но вы можете сделать (в значительной степени) что-нибудь в коде C#, если хотите.

например.

<Border BorderBrush="Red"> 
    <TextBlock Text="Lorem Ipsum"/> 
</Border> 

против

var border = new Border(); 
border.BorderBrush = Brushes.Red; 
var textBlock = new TextBlock(); 
textBlock.Text = "Lorem Ipsum"; 
// The following step is implicit in XAML via the structure 
border.Child = textBlock; 

Хотя это может быть более сжато и иерархически:

new Border 
{ 
    BorderBrush = Brushes.Red, 
    Child = new TextBlock 
    { 
     Text = "Lorem Ipsum" 
    } 
}; 

Вообще я всегда рекомендовал бы использовать XAML, причины включают в себя:

  • анализатор оптимизирует конструкцию дерева n в соответствии с системой компоновки WPF.
  • Создание DataTemplates в коде не поддерживается. Конструкция с использованием FrameworkElementFactories устарела в пользу использования XamlParser (и я определенно не рекомендую перехватывать строки XAML в коде).
  • Разделение между пользовательским интерфейсом и кодом.
5

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

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

+0

Как вы думаете, XAML преобразуется в IL? Его преобразовали в BAML. Не могли бы вы подтвердить ? – Learner

2

В то время как вы МОЖЕТЕ построить все в коде, XAML IS - простой способ для создания приложений WPF. Выполнение этого способа также помогает отделить ваш взгляд от вашей логики программы. В идеале команда разработчиков WPF будет состоять как минимум из одного программиста/дизайнера, который, так сказать, отвечает за XAML (или визуальную сторону) вещей. они будут создавать анимации и другие визуальные элементы. и, по крайней мере, одного «нормального» разработчика, который отвечает за логику программирования и тип модели данных. Конечно, это не идеальный мир.

2

Нет, вам не обязательно, но при @ H.B. заявляет, что это упрощает.

Если вы используете и IDE, например Visual Studio, так же как и WinForms, у вас есть дизайнер плюс Expression Blend. Если вы обнаружите, что XAML, подавляющее сначала, возможно, поиграйте с этим, а не сразу в XAML.

1

Да, вы можете кодировать чистый WPF, но я не рекомендую его.

Книга Петцольда Application = Code + Markup проведет вас с использованием чистого WPF из кода, прежде чем перейти к использованию XAML. Он легко доступен из вторых рук, и вы можете увидеть пример кода на веб-сайте. Он также доступен online on the Safari ebook site, поэтому вы можете бесплатно читать пробную учетную запись на пару недель. Его книга представляет собой очень серьезную попытку научить вас WPF без XAML в пути в отличие от подхода XAML-heavy многих других книг.

Визуальный редактор VS2010 был намного лучше предыдущего, поэтому вам не нужно много разбираться в XAML для создания ваших интерфейсов. Я также предлагаю попробовать инструмент Expression Blend, чтобы узнать, можете ли вы использовать его «дизайнерский подход» для создания интерфейса.

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

Я также предлагаю вам начать использовать шаблон MVVM с каркасом, например MVVMLite, который предоставит вам много инфраструктуры и поможет с разделением графического интерфейса и логики.

Смежные вопросы