x:Static 태그 확장

CLS(공용 언어 사양) 규격 방식으로 정의된 정적 값 기준 코드 엔터티를 참조합니다. 참조되는 정적 속성을 사용하여 XAML에서 속성 값을 제공할 수 있습니다.

XAML 특성 사용

<object property="{x:Static prefix:typeName.staticMemberName}" .../>

XAML 값

Description
prefix 선택 사항입니다. 기본이 아닌 매핑된 XAML 네임스페이스를 참조하는 접두사입니다. 기본 XAML 네임스페이스에서 제공되는 정적 속성은 거의 참조하지 않으므로 prefix가 사용에 명시적으로 표시됩니다. 설명 부분을 참조하세요.
typeName 필수 사항입니다. 원하는 정적 멤버를 정의하는 형식의 이름입니다.
staticMemberName 필수 사항입니다. 원하는 정적 값 멤버(상수, 정적 속성, 필드 또는 열거형 값)의 이름입니다.

설명

참조되는 코드 엔터티는 다음 중 하나여야 합니다.

  • 상수
  • 정적 속성
  • 필드
  • 열거형 값

비정적 속성과 같은 다른 코드 엔터티를 지정하면 XAML이 태그 컴파일된 경우 컴파일 시간 오류가 발생하거나 XAML 로드 시간 구문 분석 예외가 발생합니다.

x:Static이 현재 XAML 문서의 기본 XAML 네임스페이스에 없는 정적 필드 또는 속성을 참조하도록 할 수 있지만 접두사 매핑이 필요합니다. XAML 네임스페이스는 거의 항상 XAML 문서의 루트 요소에 정의됩니다.

기본 XAML 스키마 컨텍스트를 사용하여 실행되는 경우 .NET XAML 서비스 및 해당 XAML 판독기 및 XAML 작성기가 정적 속성에 대한 조회 작업을 수행할 수 있습니다. 이 XAML 스키마 컨텍스트는 CLR 리플렉션을 사용하여 개체 그래프 생성에 필요한 정적 값을 제공할 수 있습니다. 지정하는 typeName은 실제로 CLR 형식 이름이 아닌 XAML 형식 이름입니다. 그러나 기본 XAML 스키마 컨텍스트를 사용하거나 모든 기존 CLR 기반 XAML 구현 프레임워크를 사용할 때는 두 이름은 기본적으로 동일합니다.

직접적으로 속성 값의 형식이 아닌 x:Static 참조를 만들 때는 주의해야 합니다. XAML 처리 시퀀스에서 태그 확장으로부터 제공된 값은 추가 값 변환을 호출하지 않습니다. x:Static 참조가 텍스트 문자열을 만들고 텍스트 문자열을 기반으로 하는 특성 값에 대한 값 변환이 일반적으로 해당 특정 멤버 또는 반환 형식의 멤버 값에 대해 발생하는 경우에도 마찬가지입니다.

특성 구문은 이러한 태그 확장에 가장 많이 사용되는 구문입니다. x:Static 식별자 문자열 다음에 나오는 문자열 토큰은 기본 Member 확장명 클래스의 StaticExtension 값으로 할당됩니다.

기술적으로 가능한 다른 두 가지 XAML 사용이 있습니다. 그러나 이러한 사용은 불필요하게 자세한 정보를 표시하므로 덜 일반적입니다.

  1. 개체 요소 구문.

    <x:Static Member="prefix:typeName.staticMemberName" ... />
    
  2. 초기화 문자열에 대한 명시적 멤버 속성이 있는 특성 구문.

    <object property="{x:Static Member=prefix:typeName.staticMemberName}" ... />
    

.NET XAML 서비스 구현에서 이 태그 확장에 대한 처리는 StaticExtension 클래스를 통해 정의됩니다.

x:Static은 태그 확장입니다. XAML의 모든 태그 확장은 특성 구문에 {} 문자를 사용합니다. 여기서 특성 구문은 XAML 프로세서가 태그 확장이 값을 제공해야 함을 인식하는 데 사용하는 규칙입니다. 태그 확장에 대한 자세한 내용은 Markup Extensions for XAML Overview를 참조하세요.

WPF 사용 정보

WPF 프로그래밍에 사용하는 기본 XAML 네임스페이스에는 유용한 정적 속성이 많이 포함되어 있지 않으며, 대부분의 유용한 정적 속성은 {x:Static} 없이도 용이하게 사용할 수 있도록 형식 변환기와 같은 지원을 제공합니다. 정적 속성의 경우 다음 중 하나에 해당하는 경우 XAML 네임스페이스에 대한 접두사 매핑을 수행해야 합니다.

  • WPF에 존재하지만 WPF(http://schemas.microsoft.com/winfx/2006/xaml/presentation)의 기본 XAML 네임스페이스의 일부가 아닌 형식을 참조하고 있습니다. 이 시나리오는 x:Static을 사용하는 데 매우 일반적입니다. 예를 들어 Environment 클래스의 정적 속성을 참조하기 위해 x:Static 참조를 System CLR 네임스페이스 및 mscorlib 어셈블리에 대한 XAML 네임스페이스 매핑과 함께 사용할 수 있습니다.

  • 사용자 지정 어셈블리에서 형식을 참조하고 있습니다.

  • WPF 어셈블리에 존재하지만 WPF 기본 XAML 네임스페이스의 일부로 매핑되지 않은 CLR 네임스페이스 내에 있는 형식을 참조하고 있습니다. CLR 네임스페이스를 WPF의 기본 XAML 네임스페이스로 매핑하는 작업은 다양한 WPF 어셈블리의 정의에 의해 수행됩니다(이 개념에 대한 자세한 내용은 WPF XAML을 위한 XAML 네임스페이스 및 네임스페이스 매핑 참조). 매핑되지 않은 CLR 네임스페이스는 해당 CLR 네임스페이스가 주로 XAML용으로 의도되지 않은 클래스 정의(예: System.Windows.Threading)로 구성된 경우에 존재할 수 있습니다.

WPF에 접두사 및 XAML 네임스페이스를 사용하는 방법에 대한 자세한 내용은 WPF XAML을 위한 XAML 네임스페이스 및 네임스페이스 매핑을 참조하세요.

참고 항목