다음을 통해 공유


XAML

XAML(eXtensible Application Markup Language)은 개체를 인스턴스화 및 초기화하고 이러한 개체를 부모-자식 계층 구조로 구성하기 위한 프로그래밍 코드 대신 사용할 수 있는 XML 기반 언어입니다.

XAML을 사용하면 개발자가 코드가 아닌 태그를 사용하여 .NET 다중 플랫폼 앱 UI(.NET MAUI) 앱에서 사용자 인터페이스를 정의할 수 있습니다. .NET MAUI 앱에서는 XAML이 필요하지 않지만, 더 간결하고 시각적으로 일관되며 도구 지원이 있는 경우가 많기 때문에 UI를 개발하는 것이 좋습니다. XAML은 XAML 기반 데이터 바인딩을 통해 viewmodel 코드에 연결된 뷰를 정의하는 MVVM(Model-View-ViewModel) 패턴에도 적합합니다.

XAML 파일 내에서 모든 .NET MAUI 보기, 레이아웃 및 페이지뿐만 아니라 사용자 지정 클래스를 사용하여 사용자 인터페이스를 정의할 수 있습니다. XAML 파일을 컴파일하거나 앱 패키지에 포함할 수 있습니다. 어느 쪽이든, XAML은 빌드 시 구문 분석되어 명명된 개체를 찾고 런타임에 XAML이 나타내는 개체를 인스턴스화하고 초기화합니다.

XAML에는 동등한 코드보다 몇 가지 이점이 있습니다.

  • XAML은 종종 동등한 코드보다 간결하고 읽을 수 있습니다.
  • XML에 내재된 부모-자식 계층 구조를 사용하면 XAML이 사용자 인터페이스 개체의 부모-자식 계층 구조를 시각적으로 명확하게 모방할 수 있습니다.

태그 언어에 내장된 제한 사항과 관련된 단점도 있습니다.

  • XAML은 코드를 포함할 수 없습니다. 모든 이벤트 처리기는 코드 파일에 정의되어야 합니다.
  • XAML은 반복적인 처리를 위한 루프를 포함할 수 없습니다. 그러나 데이터 컬렉션(예 ListViewCollectionView: 및 )을 표시하는 컨트롤이 있습니다.
  • XAML은 조건부 처리를 포함할 수 없습니다. 그러나 데이터 바인딩은 일부 조건부 처리를 효과적으로 허용하는 코드 기반 바인딩 변환기를 참조할 수 있습니다.
  • XAML은 일반적으로 매개 변수가 없는 생성자를 정의하지 않는 클래스를 인스턴스화할 수 없지만 경우에 따라 이 제한을 극복할 수 있습니다.
  • XAML은 일반적으로 메서드를 호출할 수 없지만 경우에 따라 이 제한을 극복할 수 있습니다.

.NET MAUI 앱에서 XAML을 생성하기 위한 비주얼 디자이너는 없습니다. 모든 XAML은 손으로 작성해야 하지만 XAML 핫 다시 로드를 사용하여 편집할 때 UI를 볼 수 있습니다.

XAML은 기본적으로 XML이지만 XAML에는 몇 가지 고유한 구문 기능이 있습니다. 가장 중요한 사항은 다음과 같습니다.

  • 속성 요소
  • 연결된 속성
  • 태그 확장

이러한 기능은 XML 확장이 아닙니다 . XAML은 전적으로 유효한 XML입니다. 그러나 이러한 XAML 구문 기능은 고유한 방식으로 XML을 사용합니다.