WPF-XAML 개요
WPF로 작업하는 동안 가장 먼저 접하게되는 것 중 하나는 XAML입니다. XAML은 Extensible Application Markup Language를 나타냅니다. XML을 기반으로하는 간단하고 선언적인 언어입니다.
XAML에서는 계층 적 관계가있는 개체의 속성을 매우 쉽게 만들고, 초기화하고, 설정할 수 있습니다.
주로 GUI 디자인에 사용되지만 Workflow Foundation에서 워크 플로를 선언하는 등 다른 용도로도 사용할 수 있습니다.
기본 구문
새 WPF 프로젝트를 만들 때 아래와 같이 MainWindow.xaml에 기본적으로 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 파일에는 다양한 종류의 정보가 포함되어 있습니다. 다음 표는 각 정보의 역할을 간략하게 설명합니다.
정보 | 기술 |
---|---|
<창 | 여는 개체 요소 또는 루트의 컨테이너입니다. |
x : Class = "Resources.MainWindow" | 마크 업을 뒤에 정의 된 부분 클래스 코드에 연결하는 부분 클래스 선언입니다. |
xmlns = "http://schemas.microsoft.com/win fx / 2006 / xaml / presentation" | WPF 클라이언트 / 프레임 워크에 대한 기본 XAML 네임 스페이스 매핑 |
xmlns : x = "http://schemas.microsoft.com/w infx / 2006 / xaml" | x : 접두사에 매핑하는 XAML 언어 용 XAML 네임 스페이스 |
> | 루트의 개체 요소 끝 |
<그리드> </ 그리드> |
빈 그리드 객체의 시작 및 종료 태그입니다. |
</ 창> | 개체 요소 닫기 |
XAML의 구문 규칙은 XML과 거의 유사합니다. XAML 문서를 보면 실제로 유효한 XML 파일임을 알 수 있지만 XML 파일이 반드시 XAML 파일은 아닙니다. XML에서는 특성 값이 문자열이어야하고 XAML에서는 속성 요소 구문으로 알려진 다른 개체 일 수 있기 때문입니다.
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>
WPF에서 XAML을 사용해야하는 이유
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>
WPF에서 XAML을 사용하지 않기로 선택한 경우 절차 언어로도 동일한 GUI 결과를 얻을 수 있습니다. 같은 예제를 보지만 이번에는 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은 UI 요소를 디자인하는 또 다른 간단하고 쉬운 방법입니다.
XAML을 사용한다고해서 UI 요소를 디자인하기 위해 수행 할 수있는 작업이 유일한 방법은 아닙니다. XAML에서 개체를 선언하거나 코드를 사용하여 정의 할 수 있습니다.
XAML은 선택 사항이지만 그럼에도 불구하고 WPF 디자인의 핵심입니다.
XAML의 목표는 비주얼 디자이너가 사용자 인터페이스 요소를 직접 만들 수 있도록하는 것입니다.
WPF는 마크 업에서 사용자 인터페이스의 모든 시각적 측면을 제어 할 수 있도록하는 것을 목표로합니다.