Share via


XAML 네임스페이스 및 네임스페이스 매핑

업데이트: 2007년 11월

이 항목에서는 각 XAML(Extensible Application Markup Language) 파일의 루트 태그에서 찾을 수 있는 두 XML 네임스페이스 매핑과 그 용도에 대해 자세하게 설명합니다. 또한 고유한 코드나 별도의 어셈블리에 정의된 요소에 사용할 수 있도록 유사한 매핑을 생성하는 방법에 대해서도 설명합니다.

이 항목에는 다음 단원이 포함되어 있습니다.

  • WPF 및 XAML 네임스페이스 선언
  • 사용자 지정 클래스 및 어셈블리 매핑
  • CLR 네임스페이스를 어셈블리의 XML 네임스페이스에 매핑
  • 관련 항목

WPF 및 XAML 네임스페이스 선언

많은 XAML(Extensible Application Markup Language) 파일의 루트 태그에 있는 네임스페이스 선언에는 두 가지 XML 네임스페이스 선언이 있습니다. 다음과 같은 첫 번째 선언은 전체 WPF(Windows Presentation Foundation) 네임스페이스를 기본값으로 매핑합니다.

xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"

두 번째 선언은 개별 XAML(Extensible Application Markup Language) 네임스페이스를 대개 x: 접두사에 매핑합니다.

xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"

여기서 XAML은 언어 정의이고, WPF는 XAML을 언어로 사용하는 한 가지 구현입니다. XAML 언어는 호환성을 유지하기 위해 구현되는 것으로 간주되는 특정 언어 요소를 지정하며 이러한 언어 요소 각각은 XAML 네임스페이스에서 작동하는 XAML 프로세서 구현을 통해 액세스할 수 있어야 합니다. WPF 구현 및 이 구현에 사용되는 프로그래밍 모델에서는 일반적으로 고유한 API에 기본 XML 네임스페이스를 사용하며 XAML에서 사용되는 태그 구문에는 별도로 매핑된 접두사를 사용합니다. 규칙에 따라 해당 접두사는 x:이며, 이 SDK의 프로젝트 템플릿, 샘플 코드 및 언어 기능 설명서에서는 이 x: 규칙을 따릅니다. XAML 네임스페이스는 기본적인 WPF 응용 프로그램에도 필요한 여러 가지 일반적인 기능을 정의합니다. 예를 들어 partial 클래스를 통해 코드 숨김을 XAML 파일에 결합하려면 관련 XAML 파일의 루트 요소에서 해당 클래스를 x:Class 특성으로 명명해야 합니다. 또는 XAML 페이지에 정의된 요소 중 키가 지정된 리소스로 액세스하려는 요소에는 x:Key 특성을 설정해야 합니다. XAML의 이러한 특징과 기타 특징에 대한 자세한 내용은 XAML 개요 또는 XAML 구문 용어를 참조하십시오.

사용자 지정 클래스 및 어셈블리 매핑

표준 WPF 및 XAML 네임스페이스를 접두사에 매핑하는 방식과 유사하게 xmlns 접두사 선언 내에서 일련의 토큰을 사용하여 XML 네임스페이스를 어셈블리에 매핑할 수 있습니다.

구문에는 다음과 같은 명명된 토큰과 값을 사용할 수 있습니다.

clr-namespace: 요소로 노출되는 공용 형식을 포함하는 어셈블리 내에서 선언된 CLR(공용 언어 런타임) 네임스페이스입니다.

assembly= 참조된 CLR 네임스페이스 일부 또는 전체를 포함하는 어셈블리입니다. 대개 이 값은 경로가 아니라 어셈블리 이름입니다. 해당 어셈블리의 경로는 컴파일된 XAML을 생성하는 프로젝트 파일에서 프로젝트 참조로 설정해야 합니다. 선택적으로, 버전 관리와 강력한 이름 서명을 통합하기 위해 AssemblyName으로 정의된 문자열을 값으로 사용할 수 있습니다.

clr-namespace 토큰과 해당 값을 구분하는 문자는 콜론(:)이지만, assembly 토큰과 해당 값을 구분하는 문자는 등호(=)입니다. 이 두 토큰 간을 구분하는 데 사용되는 문자는 세미콜론입니다. 또한 선언에는 공백을 포함하면 안 됩니다. 예를 들어, 다음과 같습니다.

xmlns:custom="clr-namespace:SDKSample;assembly=SDKSampleLibrary"

현재 어셈블리에 매핑

사용자 지정 클래스를 참조하는 응용 프로그램 코드와 동일한 어셈블리 내에서 clr-namespace 참조를 정의하는 경우에는 assembly를 생략할 수 있습니다. 등호 다음에 문자열 토큰 없이 assembly=를 지정하는 구문도 이와 동일합니다.

사용자 지정 클래스는 동일한 어셈블리에 정의된 경우 페이지의 루트 요소로 사용할 수 없습니다. Partial 클래스는 매핑할 필요가 없으며 응용 프로그램에서 페이지의 partial 클래스가 아닌 클래스 중 XAML에서 요소로 참조하려는 클래스만 매핑하면 됩니다.

CLR 네임스페이스를 어셈블리의 XML 네임스페이스에 매핑

WPF는 여러 CLR 네임스페이스를 단일 XML 네임스페이스에 매핑하기 위해 XAML 프로세서에서 사용되는 CLR 특성을 정의합니다. XmlnsDefinitionAttribute라는 이 특성은 어셈블리를 생성하는 소스 코드의 어셈블리 수준에 배치됩니다. WPF 어셈블리 소스 코드에서는 이 특성을 사용하여 System.WindowsSystem.Windows.Controls 같은 다양한 공용 네임스페이스를 https://schemas.microsoft.com/winfx/2006/xaml/presentation 네임스페이스에 매핑합니다.

XmlnsDefinitionAttribute에는 XML 네임스페이스 이름과 CLR 네임스페이스 이름의 두 가지 매개 변수가 사용됩니다. 여러 CLR 네임스페이스를 동일한 XML 네임스페이스에 매핑하기 위해 둘 이상의 XmlnsDefinitionAttribute가 존재할 수 있습니다. 매핑한 후에는 partial 클래스의 코드 숨김 페이지에서 적절한 using 문을 사용하여 정규화된 이름 없이도 이러한 네임스페이스의 멤버를 참조할 수 있습니다. 자세한 내용은 XmlnsDefinitionAttribute를 참조하십시오.

참고 항목

개념

XAML 개요

기타 리소스

XML 네임스페이스 이해