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는 마크 업에서 사용자 인터페이스의 모든 시각적 측면을 제어 할 수 있도록하는 것을 목표로합니다.