XAML 네임스페이스

XAML은 네임스페이 xmlns 스 선언에 XML 특성을 사용합니다. XAML 파일의 루트 요소 내에는 항상 두 개의 XAML 네임스페이스 선언이 있습니다. 첫 번째는 기본 네임스페이스를 정의합니다.

xmlns="http://schemas.microsoft.com/dotnet/2021/maui"

기본 네임스페이스는 접두사 없이 XAML 파일 내에 정의된 요소가 .NET 다중 플랫폼 앱 UI(.NET MAUI) 클래스(예: ContentPage, LabelButton)를 참조하도록 지정합니다.

두 번째 네임스페이스 선언은 접두사를 x 사용합니다.

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

XAML은 접두사를 사용하여 기본이 아닌 네임스페이스를 선언하고 네임스페이스 내에서 형식을 참조할 때 접두사를 사용합니다. 네임스페이스 선언은 x 접두 x 사를 사용하여 XAML 내에 정의된 요소가 XAML에 내장된 요소 및 특성(특히 2009 XAML 사양)에 사용되도록 지정합니다.

다음 표에서는 .NET MAUI에서 x 지원하는 구문을 간략하게 설명합니다.

구문 설명
x:Arguments 기본이 아닌 생성자 또는 팩터리 메서드 개체 선언에 대한 생성자 인수를 지정합니다.
x:Class XAML에 정의된 클래스의 네임스페이스 및 클래스 이름을 지정합니다. 클래스 이름은 코드 숨김 파일의 클래스 이름과 일치해야 합니다. 이 구문은 XAML 파일의 루트 요소에만 표시할 수 있습니다.
x:DataType XAML 요소와 자식 요소가 바인딩할 개체의 형식을 지정합니다.
x:FactoryMethod 개체를 초기화하는 데 사용할 수 있는 팩터리 메서드를 지정합니다.
x:FieldModifier 명명된 XAML 요소에 대해 생성된 필드의 액세스 수준을 지정합니다.
x:Key 의 각 리소스 ResourceDictionary에 대해 고유한 사용자 정의 키를 지정합니다. 키의 값은 XAML 리소스를 검색하는 데 사용되며 일반적으로 태그 확장의 StaticResource 인수로 사용됩니다.
x:Name XAML 요소의 런타임 개체 이름을 지정합니다. 설정 x:Name 은 코드에서 변수를 선언하는 것과 비슷합니다.
x:TypeArguments 제네릭 형식의 생성자에 대한 제네릭 형식 인수를 지정합니다.

특성에 x:DataType 대한 자세한 내용은 컴파일된 바인딩을 참조 하세요. 특성에 대한 x:FieldModifier 자세한 내용은 필드 한정자를 참조 하세요. 및 특성에 x:Arguments 대한 자세한 내용은 Pass 인수를 참조 x:FactoryMethod 하세요. 특성에 대한 x:TypeArguments 자세한 내용은 제네릭을 참조 하세요.

구문 설명
x:Arguments 기본이 아닌 생성자 또는 팩터리 메서드 개체 선언에 대한 생성자 인수를 지정합니다.
x:Class XAML에 정의된 클래스의 네임스페이스 및 클래스 이름을 지정합니다. 클래스 이름은 코드 숨김 파일의 클래스 이름과 일치해야 합니다. 이 구문은 XAML 파일의 루트 요소에만 표시할 수 있습니다.
x:ClassModifier 어셈블리에서 생성된 클래스의 액세스 수준을 지정합니다.
x:DataType XAML 요소와 자식 요소가 바인딩할 개체의 형식을 지정합니다.
x:FactoryMethod 개체를 초기화하는 데 사용할 수 있는 팩터리 메서드를 지정합니다.
x:FieldModifier 명명된 XAML 요소에 대해 생성된 필드의 액세스 수준을 지정합니다.
x:Key 의 각 리소스 ResourceDictionary에 대해 고유한 사용자 정의 키를 지정합니다. 키의 값은 XAML 리소스를 검색하는 데 사용되며 일반적으로 태그 확장의 StaticResource 인수로 사용됩니다.
x:Name XAML 요소의 런타임 개체 이름을 지정합니다. 설정 x:Name 은 코드에서 변수를 선언하는 것과 비슷합니다.
x:TypeArguments 제네릭 형식의 생성자에 대한 제네릭 형식 인수를 지정합니다.

특성에 대한 x:ClassModifier 자세한 내용은 클래스 한정자를 참조 하세요. 특성에 x:DataType 대한 자세한 내용은 컴파일된 바인딩을 참조 하세요. 특성에 대한 x:FieldModifier 자세한 내용은 필드 한정자를 참조 하세요. 및 특성에 x:Arguments 대한 자세한 내용은 Pass 인수를 참조 x:FactoryMethod 하세요. 특성에 대한 x:TypeArguments 자세한 내용은 제네릭을 참조 하세요.

참고 항목

위에 나열된 구문 외에도 .NET MAUI에는 네임스페이스 접두사를 통해 x 사용할 수 있는 태그 확장도 포함되어 있습니다. 자세한 내용은 XAML 태그 확장 사용(Consume XAML Markup Extensions)을 참조 하세요.

XAML에서 네임스페이스 선언은 부모 요소에서 자식 요소로 상속됩니다. 따라서 XAML 파일의 루트 요소에서 네임스페이스를 정의할 때 해당 파일 내의 모든 요소는 네임스페이스 선언을 상속합니다.

형식에 대한 네임스페이스 선언

접두사를 사용하여 XAML 네임스페이스를 선언하고, 네임스페이스 선언에서 CLR(공용 언어 런타임) 네임스페이스 이름을 지정하고, 필요에 따라 어셈블리 이름을 지정하여 XAML에서 형식을 참조할 수 있습니다. 이 작업은 네임스페이스 선언 내에서 다음 키워드(keyword) 값을 정의하여 수행됩니다.

  • clr-namespace: 또는 using: – XAML 요소로 노출할 형식을 포함하는 어셈블리 내에서 선언된 CLR 네임스페이스입니다. 이 키워드(keyword) 필요합니다.
  • assembly= – 참조된 CLR 네임스페이스를 포함하는 어셈블리입니다. 이 값은 파일 확장명 없이 어셈블리의 이름입니다. 어셈블리에 대한 경로는 어셈블리를 참조할 XAML 파일이 포함된 프로젝트에서 참조로 설정해야 합니다. clr-namespace 값이 형식을 참조하는 앱 코드와 동일한 어셈블리 내에 있으면 이 키워드(keyword) 생략할 수 있습니다.

참고 항목

값에서 또는 using 토큰을 구분하는 clr-namespace 문자는 콜론인 반면 토큰을 해당 값과 구분하는 assembly 문자는 등호입니다. 두 토큰 간에 사용할 문자는 세미콜론입니다.

다음 코드 예제에서는 XAML 네임스페이스 선언을 보여줍니다.

<ContentPage ... xmlns:local="clr-namespace:MyMauiApp">
  ...
</ContentPage>

또는 다음과 같이 작성할 수 있습니다.

<ContentPage ... xmlns:local="using:MyMauiApp">
  ...
</ContentPage>

local 접두사는 네임스페이스 내의 형식이 앱에 로컬임을 나타내는 데 사용되는 규칙입니다. 또는 형식이 다른 어셈블리에 있는 경우 네임스페이스 선언에서도 어셈블리 이름을 정의해야 합니다.

<ContentPage ... xmlns:controls="clr-namespace:Controls;assembly=MyControlLibrary" ...>
  ...
</ContentPage>

가져온 네임스페이스에서 형식의 인스턴스를 선언할 때 네임스페이스 접두사를 지정합니다.

<controls:Expander IsExpanded="True">
    ...
</controls:Expander>

사용자 지정 네임스페이스 스키마 정의에 대한 자세한 내용은 사용자 지정 네임스페이스 스키마를 참조 하세요.