Учебники

WPF – XAML Обзор

Одна из первых вещей, с которой вы столкнетесь при работе с WPF, – это XAML. XAML расшифровывается как расширяемый язык разметки приложений. Это простой и декларативный язык, основанный на XML.

  • В XAML очень легко создавать, инициализировать и устанавливать свойства объектов с иерархическими отношениями.

  • Он в основном используется для разработки графических интерфейсов, однако может использоваться и для других целей, например, для объявления рабочего процесса в Workflow Foundation.

В XAML очень легко создавать, инициализировать и устанавливать свойства объектов с иерархическими отношениями.

Он в основном используется для разработки графических интерфейсов, однако может использоваться и для других целей, например, для объявления рабочего процесса в Workflow Foundation.

Основной синтаксис

Когда вы создаете новый проект WPF, вы встретите код XAML по умолчанию в MainWindow.xaml, как показано ниже.

<Window x:Class = "Resources.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
   Title = "MainWindow" Height = "350" Width = "525"> 
	
   <Grid> 
         
   </Grid> 
	
</Window>

Приведенный выше файл XAML содержит различные виды информации. Следующая таблица кратко объясняет роль каждой информации.

Информация Описание
<Window Это открываемый элемент объекта или контейнер корня.
x: Class = “Resources.MainWindow” Это частичное объявление класса, которое связывает разметку с частичным кодом класса, определенным позади.
xmlns = “http://schemas.microsoft.com/win fx / 2006 / xaml / presentation” Сопоставляет пространство имен XAML по умолчанию для клиента / инфраструктуры WPF
xmlns: x = “http://schemas.microsoft.com/w infx / 2006 / xaml” Пространство имен XAML для языка XAML, которое сопоставляет его с префиксом x:
> Конец объекта элемента корня

<Grid>

</ Grid>

Это запуск и закрытие тегов пустого объекта сетки.
</ Window> Закрытие элемента объекта

<Grid>

</ Grid>

Правила синтаксиса для XAML почти аналогичны XML. Если вы посмотрите на документ XAML, то заметите, что это действительно допустимый XML-файл, но XML-файл не обязательно является XAML-файлом. Это связано с тем, что в XML значение атрибутов должно быть строкой, а в XAML это может быть другой объект, известный как синтаксис элемента Property.

  • Синтаксис элемента Object начинается с левой угловой скобки (<), за которой следует имя объекта, например, Button.

  • Определите некоторые свойства и атрибуты этого элемента объекта.

  • Элемент Object должен быть закрыт косой чертой (/), за которой сразу следует правая угловая скобка (>).

Синтаксис элемента Object начинается с левой угловой скобки (<), за которой следует имя объекта, например, Button.

Определите некоторые свойства и атрибуты этого элемента объекта.

Элемент Object должен быть закрыт косой чертой (/), за которой сразу следует правая угловая скобка (>).

Пример простого объекта без дочернего элемента

<Button/> 

Пример элемента объекта с некоторыми атрибутами

<Button Content = "Click Me" Height = "30" Width = "60" /> 

Пример альтернативного синтаксиса определяет свойства (синтаксис элемента свойства)

<Button> 
   <Button.Content>Click Me</Button.Content> 
   <Button.Height>30</Button.Height> 
   <Button.Width>60</Button.Width> 
</Button> 

Пример объекта с дочерним элементом: StackPanel содержит Textblock в качестве дочернего элемента

<StackPanel Orientation = "Horizontal"> 
   <TextBlock Text = "Hello"/> 
</StackPanel> 

Почему XAML в WPF

XAML – это не только самая широко известная функция WPF, но и одна из самых неправильно понятых. Если вы знакомы с WPF, значит, вы слышали о XAML; но обратите внимание на следующие два менее известных факта о XAML –

  • WPF не нужен XAML
  • XAML не нуждается в WPF

Они на самом деле отдельные технологии. Чтобы понять, как это может быть, давайте рассмотрим простой пример, в котором кнопка создается с некоторыми свойствами в XAML.

<Window x:Class = "WPFXAMLOverview.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
   Title = "MainWindow" Height = "350" Width = "604"> 
	
   <StackPanel> 
      <Button x:Name = "button" Content = "Click Me" HorizontalAlignment = "Left"  
         Margin = "150" VerticalAlignment = "Top" Width = "75" /> 
   </StackPanel> 
	
</Window> 

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

using System.Windows; 
using System.Windows.Controls;  

namespace WPFXAMLOverview { 
   /// <summary> 
      /// Interaction logic for MainWindow.xaml 
   /// </summary> 
	
   public partial class MainWindow : Window { 
	
      public MainWindow() { 
         InitializeComponent(); 
			
         // Create the StackPanel 
         StackPanel stackPanel = new StackPanel(); 
         this.Content = stackPanel; 
			
         // Create the Button 
         Button button = new Button();
         button.Content = "Click Me"; 
         button.HorizontalAlignment = HorizontalAlignment.Left; 
         button.Margin = new Thickness(150); 
         button.VerticalAlignment = VerticalAlignment.Top; 
         button.Width = 75; 
         stackPanel.Children.Add(button);  
      } 
   } 
} 

Когда вы скомпилируете и выполните код XAML или код C #, вы увидите тот же вывод, как показано ниже.

Выход XAML

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

XAML – это еще один простой и легкий способ разработки элементов пользовательского интерфейса.

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

XAML не обязателен, но, несмотря на это, он лежит в основе дизайна WPF.

Цель XAML – дать возможность визуальным дизайнерам создавать элементы пользовательского интерфейса напрямую.

WPF стремится сделать возможным управление всеми визуальными аспектами пользовательского интерфейса из разметки.