x:Name 특성
업데이트: 2007년 11월
코드 숨김 또는 일반 코드에서 인스턴스화된 요소에 액세스하기 위해 개체 요소를 고유하게 식별합니다. 백업 프로그래밍 모델에 적용하는 경우 x:Name은 생성자에서 반환한 개체 참조를 보유하는 변수와 같은 것으로 간주됩니다.
XAML 특성 사용
<object x:Name="XAMLNameValue".../>
XAML 값
XAMLNameValue |
XamlName 문법 제한을 따르는 문자열입니다. |
설명
XAML, partial 클래스 및 코드 숨김을 사용하는 WPF 응용 프로그램 프로젝트의 표준 빌드 구성을 사용할 경우 지정된 x:Name은 XAML이 처리될 때 기본 코드에서 생성되는 필드의 이름이 되며 해당 필드는 개체에 대한 참조를 보유합니다.
생성된 필드는 기본적으로 내부 필드입니다. 필드에 대한 액세스는 x:FieldModifier 특성을 지정하여 변경할 수 있습니다.
Microsoft Visual Basic .NET 대상을 사용하고 XAML 파일을 포함하는 응용 프로그램의 경우에는 컴파일 시 별도의 참조 속성이 만들어지는데 이 참조 속성은 이벤트 처리기 대리자에 Handles 구문을 사용할 수 있도록 x:Name을 가진 모든 요소에 WithEvents 키워드를 추가합니다. 이 속성은 항상 public 속성입니다. 자세한 내용은 Visual Basic 및 WPF 이벤트 처리를 참조하십시오.
x:Name은 이름 범위 내에서 고유해야 합니다. XAML을 사용하는 가장 일반적인 시나리오에서는 단일 XAML 페이지에 포함된 이러한 요소를 통해 기본 이름 범위가 정의되고 다른 이름 범위는 해당 페이지에 함께 정의되어 있는 템플릿을 통해 정의됩니다. 이름 범위 고려 사항에 대한 자세한 내용은 WPF 이름 범위를 참조하십시오.
XAML 프로세서는 페이지가 컴파일되지 않은 경우(예: 느슨한 XAML)를 포함하여 이름 범위에 이름을 등록하는 데 x:Name을 사용합니다. 이렇게 하는 이유는 ElementName 바인딩에 x:Name이 필요하기 때문입니다. 자세한 내용은 데이터 바인딩 개요를 참조하십시오.
WPF 프로그래밍의 특정 범위에는 x:Name을 적용할 수 없습니다. 예를 들어 ResourceDictionary는 자체적으로 XAML 이름 범위로 정의되지만 주요 INameScope API에 대해서는 구현 안 됨을 반환하는 특별한 동작을 가지고 있기 때문에 ResourceDictionary에 포함된 항목은 이름을 가질 수 없습니다.
x:Name의 허용 규칙 및 고유한 범위 지정은 다양한 태그 요소를 리소스 사전, 페이지 수준의 XAML에서 만든 논리 트리, 템플릿 등의 개별 NameScope 범위로 분류하는 기본 WPF(Windows Presentation Foundation) 프레임워크 구현을 통해 정의됩니다.
일부 WPF 프레임워크 수준 응용 프로그램의 경우 FrameworkElement/FrameworkContentElement와 같은 몇 가지 중요한 기본 클래스의 WPF 네임스페이스 안에 지정된 Name 종속성 속성을 동일한 용도로 사용할 수 있기 때문에 x:Name 특성을 사용하지 않을 수도 있습니다. 애니메이션 및 Storyboard를 지원하는 일부 클래스와 같이 코드를 통해 Name 속성이 없는 요소에 액세스해야 하는 일반적인 XAML 및 프레임워크 시나리오도 있습니다. 예를 들어 XAML에서 만든 Timeline 및 변환을 코드에서 참조해야 하는 경우에는 해당 항목에 x:Name을 지정해야 합니다.
Name을 클래스의 속성으로 사용할 수 있으면 Name 및 x:Name을 특성으로 번갈아 사용할 수 있지만 같은 요소에 둘 다 지정하면 오류가 발생합니다.
사용자 지정 요소의 경우 지정된 개체에서 x:Name에 매핑되는 속성(CLR 속성 또는 종속성 속성)은 속성 선언 코드에서 해당 속성에 RuntimeNamePropertyAttribute를 지정하여 설정하거나 변경할 수 있습니다.
Name은 XAML 특성 구문을 사용하거나 코드에서 SetValue를 사용하여 설정할 수 있습니다. 그러나 Name 속성을 코드에서 설정하면 이름 범위에 해당 필드 참조가 만들어지지 않는 경우도 있습니다. Name을 코드에서 설정하는 대신 코드에서 적절한 이름 범위에 대해 NameScope 메서드를 사용하는 것이 좋습니다.
내부 텍스트가 포함된 XAML 속성 요소 구문을 사용하여 Name을 설정할 수도 있지만 이 방법은 일반적으로 사용되지 않습니다. x:Name은 XAML 속성 요소 구문 또는 코드에서 SetValue를 사용하여 설정할 수 없으며, 요소에 대해 특성 구문을 사용하는 방법으로만 설정할 수 있습니다.