x:Name 특성x:Name attribute

코드 숨김이 나 일반 코드에서 인스턴스화된 개체에 액세스할 수 있는 개체 요소를 고유 하 게 식별 합니다.Uniquely identifies object elements for access to the instantiated object from code-behind or general code. 지원 프로그래밍 모델에 적용 되 면 x:Name 은 생성자에서 반환 된 개체 참조를 보유 하는 변수와 동일한 것으로 간주할 수 있습니다.Once applied to a backing programming model, x:Name can be considered equivalent to the variable holding an object reference, as returned by a constructor.

XAML 특성 사용XAML attribute usage

<object x:Name="XAMLNameValue".../>

XAML 값XAML values

용어Term DescriptionDescription
XAMLNameValueXAMLNameValue XamlName 문법의 제한 사항을 준수 하는 문자열입니다.A string that conforms to the restrictions of the XamlName grammar.

XamlName 문법XamlName grammar

다음은이 XAML 구현에서 키로 사용 되는 문자열에 대 한 규범 문법입니다.The following is the normative grammar for a string that is used as a key in this XAML implementation:

XamlName ::= NameStartChar (NameChar)*
NameStartChar ::= LetterCharacter | '_'
NameChar ::= NameStartChar | DecimalDigit
LetterCharacter ::= ('a'-'z') | ('A'-'Z')
DecimalDigit ::= '0'-'9'
CombiningCharacter::= none
  • 문자는 더 낮은 ASCII 범위로 제한 되며 보다 구체적으로는 로마 알파벳 대 문자와 소문자, 숫자 및 밑줄 () 문자로 제한 됩니다 _ .Characters are restricted to the lower ASCII range, and more specifically to Roman alphabet uppercase and lowercase letters, digits, and the underscore (_) character.
  • 유니코드 문자 범위는 지원 되지 않습니다.The Unicode character range is not supported.
  • 이름은 숫자로 시작할 수 없습니다.A name cannot begin with a digit. _사용자가 숫자를 초기 문자로 제공 하거나 도구에서 숫자가 포함 된 다른 값을 기준으로 x:Name 값을 경로도 하는 경우 일부 도구 구현은 문자열에 밑줄 ()을 추가 합니다.Some tool implementations prepend an underscore (_) to a string if the user supplies a digit as the initial character, or the tool autogenerates x:Name values based on other values that contain digits.

설명Remarks

지정 된 x:Name 은 XAML이 처리 될 때 기본 코드에서 생성 되는 필드 이름이 되 고, 해당 필드에는 개체에 대 한 참조가 포함 됩니다.The specified x:Name becomes the name of a field that is created in the underlying code when XAML is processed, and that field holds a reference to the object. 이 필드를 만드는 프로세스는 XAML 파일 및 해당 코드 숨김으로 partial 클래스를 조인 하는 것을 담당 하는 MSBuild 대상 단계에 의해 수행 됩니다.The process of creating this field is performed by the MSBuild target steps, which also are responsible for joining the partial classes for a XAML file and its code-behind. 이 동작은 XAML 언어가 반드시 지정 되는 것은 아닙니다. XAML에 대 한 UWP (유니버설 Windows 플랫폼) 프로그래밍은 해당 프로그래밍 및 응용 프로그램 모델에서 x:Name 을 사용 하기 위해 적용 되는 특정 구현입니다.This behavior is not necessarily XAML-language specified; it is the particular implementation that Universal Windows Platform (UWP) programming for XAML applies to use x:Name in its programming and application models.

정의 된 각 x:Name 은 xaml 이름 범위 내에서 고유 해야 합니다.Each defined x:Name must be unique within a XAML namescope. 일반적으로 XAML 이름 범위는 로드 된 페이지의 루트 요소 수준에서 정의 되며 단일 XAML 페이지에서 해당 요소 아래에 있는 모든 요소를 포함 합니다.Generally, a XAML namescope is defined at the root element level of a loaded page and contains all elements under that element in a single XAML page. 추가 XAML 이름 범위는 해당 페이지에 정의 된 컨트롤 템플릿 또는 데이터 템플릿에 의해 정의 됩니다.Additional XAML namescopes are defined by any control template or data template that is defined on that page. 런타임에, 적용된 컨트롤 템플릿에서 만들어진 개체 트리의 루트에 대해, 그리고 XamlReader.Load 호출에서 만들어진 개체 트리에 의해 다른 XAML 이름 범위가 만들어집니다.At run time, another XAML namescope is created for the root of the object tree that is created from an applied control template, and also by object trees created from a call to XamlReader.Load. 자세한 내용은 XAML 이름 범위를 참조 하세요.For more info, see XAML namescopes.

디자인 도구는 요소를 디자인 화면에 도입할 때 요소에 대해 x:Name 값을 자동으로 생성 하는 경우가 많습니다.Design tools often autogenerate x:Name values for elements when they are introduced to the design surface. 자동 생성 구성표는 사용 중인 디자이너에 따라 다르지만 일반적인 체계는 요소를 지 원하는 클래스 이름으로 시작 하는 문자열을 생성 하 고 그 다음에 이동 하는 정수를 생성 하는 것입니다.The autogeneration scheme varies depending on which designer you are using, but a typical scheme is to generate a string that starts with the class name that backs the element, followed by an advancing integer. 예를 들어, 디자이너에 첫 번째 Button 요소를 도입 하는 경우 XAML에서이 요소의 x:Name 특성 값은 "Button1"이 됩니다.For example, if you introduce the first Button element to the designer, you might see that in the XAML this element has the x:Name attribute value of "Button1".

x:Name 은 XAML 속성 요소 구문이 나 SetValue를 사용 하는 코드에서 설정할 수 없습니다.x:Name cannot be set in XAML property element syntax, or in code using SetValue. x:Name 은 요소에 대해 XAML 특성 구문을 사용 하는 경우에만 설정할 수 있습니다.x:Name can only be set using XAML attribute syntax on elements.

참고    특히 c + +/CX 응용 프로그램의 경우 XAML 파일 또는 페이지의 루트 요소에 대해 x:Name 참조의 지원 필드가 생성 되지 않습니다.Note  Specifically for C++/CX apps, a backing field for an x:Name reference is not created for the root element of a XAML file or page. C + + 코드 숨김으로 루트 개체를 참조 해야 하는 경우 다른 Api 또는 트리 트래버스를 사용 합니다.If you need to reference the root object from C++ code-behind, use other APIs or tree traversal. 예를 들어 알려진 명명 된 자식 요소에 대해 FindName 을 호출한 다음 Parent를 호출할 수 있습니다.For example you can call FindName for a known named child element and then call Parent.

x:Name 및 기타 이름 속성x:Name and other Name properties

UWP XAML에서 사용 되는 일부 형식에는 이름이 Name인 속성도 있습니다.Some types used in UWP XAML also have a property named Name. 예를 들면 FrameworkElement.NameTextElement.Name입니다.For example, FrameworkElement.Name and TextElement.Name.

이름을 요소에 대해 설정 가능한 속성으로 사용할 수 있는 경우 XAML에서 namex:Name 을 서로 바꿔 사용할 수 있지만 동일한 요소에 두 특성이 모두 지정 된 경우 오류가 발생 합니다.If Name is available as a settable property on an element, Name and x:Name can be used interchangeably in XAML, but an error results if both attributes are specified on the same element. 이름 속성이 있지만 읽기 전용 인 경우도 있습니다 (예: VisualState.Name).There are also cases where there's a Name property but it's read-only (like VisualState.Name). 해당 하는 경우 항상 x:Name 을 사용 하 여 XAML에서 해당 요소의 이름을 표시 하 고, 일부 낮은 공통 코드 시나리오에 대해 읽기 전용 이름이 존재 합니다.If that's the case you always use x:Name to name that element in the XAML and the read-only Name exists for some less-common code scenario.

참고  FrameworkElement.Name 는 일반적으로 x:Name에 의해 설정 된 값을 변경 하는 방법으로 사용 하면 안 됩니다. 단, 해당 일반 규칙에 대 한 예외가 있는 경우도 있습니다.Note  FrameworkElement.Name generally should not be used as a way to change values originally set by x:Name, although there are some scenarios that are exceptions to that general rule. 일반적인 시나리오에서 XAML 이름 범위를 만들고 정의 하는 작업은 XAML 프로세서 작업입니다.In typical scenarios, the creation and definition of XAML namescopes is a XAML processor operation. 런타임에 FrameworkElement.Name 를 수정 하면 코드 숨김으로 추적 하기 어려운 일관 되지 않은 xaml 이름 범위/전용 필드 명명 맞춤이 생성 될 수 있습니다.Modifying FrameworkElement.Name at run time can result in an inconsistent XAML namescope / private field naming alignment, which is hard to keep track of in your code-behind.

x:Name 및 x:Keyx:Name and x:Key

x:Namex:Key 특성에 대 한 대체 역할을 하기 위해 ResourceDictionary 내의 요소에 특성으로 적용할 수 있습니다.x:Name can be applied as an attribute to elements within a ResourceDictionary to act as a substitute for the x:Key attribute. ( ResourceDictionary 의 모든 요소에는 X:Key 또는 x:Name 특성이 있어야 함을 나타내는 규칙입니다.) Storyboarded 애니메이션에 일반적입니다.(It's a rule that all elements in a ResourceDictionary must have an x:Key or x:Name attribute.) This is common for Storyboarded animations. 자세한 내용은 ResourceDictionary 및 XAML 리소스 참조섹션을 참조 하세요.For more info, see section of ResourceDictionary and XAML resource references.