Одна из первых вещей, с которой вы столкнетесь при работе с 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 не обязателен, но, несмотря на это, он лежит в основе дизайна WPF.
Цель XAML — дать возможность визуальным дизайнерам создавать элементы пользовательского интерфейса напрямую.
WPF стремится сделать возможным управление всеми визуальными аспектами пользовательского интерфейса из разметки.
