FrameworkElement.Name 속성

정의

요소를 식별하는 이름을 가져오거나 설정합니다.Gets or sets the identifying name of the element. 이 이름은 생성된 후 XAMLXAML 프로세서에서 처리하는 동안 이벤트 처리기 코드 등의 코드 숨김에서 태그 요소를 참조할 수 있도록 참조를 제공합니다.The name provides a reference so that code-behind, such as event handler code, can refer to a markup element after it is constructed during processing by a XAMLXAML processor.

public:
 property System::String ^ Name { System::String ^ get(); void set(System::String ^ value); };
[System.Windows.Localizability(System.Windows.LocalizationCategory.NeverLocalize)]
public string Name { get; set; }
member this.Name : string with get, set
Public Property Name As String

속성 값

요소의 이름을 나타내며The name of the element. 기본값은 빈 문자열입니다.The default is an empty string.

구현

특성

예제

다음 예제에서는 코드에서 Name 속성을 설정한 다음 RegisterName를 호출 하 여 새로 만든 NameScope에 이름을 등록 합니다.The following example sets the Name property in code, and then registers the name into the newly created NameScope by calling RegisterName. 스토리 보드에는 Name의 대상 지정이 필요 하며 개체 참조의 대상으로 지정할 수 없기 때문에 여기에 설명 된 기술은 storyboard에 애니메이션을 적용 하기 위한 요구 사항입니다.The technique illustrated here is a requirement for animating with storyboards, because storyboards require targeting by the Name, and cannot be targeted by object reference.

//  
// Create a Rectangle
//
Rectangle myRectangle = new Rectangle();
myRectangle.Width = 200;
myRectangle.Height = 200;
myRectangle.Name = "myRectangle";
this.RegisterName(myRectangle.Name, myRectangle); 
'  
' Create a Rectangle
'
Dim myRectangle As New Rectangle()
myRectangle.Width = 200
myRectangle.Height = 200
myRectangle.Name = "myRectangle"
Me.RegisterName(myRectangle.Name, myRectangle)

설명

이 속성은 XAMLXAML 요소 이름을 태그의 특성으로 지정 하는 데 가장 일반적으로 사용 됩니다.The most common usage of this property is to specify a XAMLXAML element name as an attribute in markup.

이 속성은 기본적으로 XAMLXAML X:Name 지시문을 설정 하는 WPF 프레임 워크 수준 편리한 속성을 제공 합니다.This property essentially provides a WPF framework-level convenience property to set the XAMLXAML x:Name Directive.

이름은 이름 범위 내에서 고유 해야 합니다.Names must be unique within a namescope. 자세한 내용은 WPF XAML 이름 범위를 참조하세요.For more information, see WPF XAML Namescopes.

코드에서 요소를 만드는 경우 Name 가져오기는 일반적이 지 않습니다.Getting a Name if you are creating elements in code is not common. 코드에 이미 적절 한 참조가 있는 경우 요소 참조에 대 한 메서드 및 속성을 호출 하기만 하면 일반적으로 Name필요 하지 않습니다.If you have the appropriate reference in code already, you can just call methods and properties on the element reference and will not generally need the Name. 이에 대 한 예외는 Name 문자열에 오버 로드 된 의미가 있는 경우 (예를 들어 UIUI에서 해당 이름을 표시 하는 데 도움이 되는 경우)입니다.An exception to this is if the Name string has some overloaded meaning, for instance if it is useful to display that name in UIUI. 원래 Name 태그에서 설정 된 경우에도 코드 숨김으로 Name를 설정 하는 것이 좋습니다. XAMLXAML 로드 한 후에 속성을 변경 해도 원래 개체 참조는 변경 되지 않습니다.Setting a Name from code-behind if the original Name was set from markup is also not recommended, and changing the property after loading the XAMLXAML will not change the original object reference. 개체 참조는 구문 분석 중에 기본 이름 범위가 명시적으로 생성 된 경우에만 생성 됩니다.The object references are created only when the underlying namescopes are explicitly created during parsing. 이미 로드 된 요소의 Name 속성을 효과적으로 변경 하려면 RegisterName를 명시적으로 호출 해야 합니다.You must specifically call RegisterName to make an effective change to the Name property of an already loaded element.

코드에서 Name를 설정 하는 것이 중요 한 한 가지 사례는 storyboard가 실행 되는 요소의 이름을 등록 하 여 런타임에 참조할 수 있는 것입니다.One notable case where setting Name from code is important is when registering names for elements that storyboards will run against, so that they can be referenced at run time. 이름을 등록 하려면에서 NameScope 인스턴스를 인스턴스화하고 할당 해야 할 수도 있습니다.Before you can register a name, might also need to instantiate and assign a NameScope instance. 예제 섹션 또는 Storyboard 개요를 참조 하세요.See the Example section, or Storyboards Overview.

설정 Name 코드에서 제한적으로 애플리케이션을 하지만 여는 요소 가져오기 Name 더 일반적입니다.Setting Name from code has limited applications, but getting an element by Name is more common. 하나의 특정 시나리오는 애플리케이션 페이지가 애플리케이션을 다시 로드 런타임 코드는 반드시 코드 숨김 페이지에 대해 정의 되지 않았고 탐색 모델을 지 원하는 경우입니다.One particular scenario is if your application supports a navigation model where pages reload into the application, and the run time code is not necessarily code-behind defined for that page. 모든 FrameworkElement에서 사용할 수 있는 유틸리티 메서드 FindName은 해당 요소에 대 한 논리적 트리에서 Name 하 여 모든 요소를 찾을 수 있으며, 필요에 따라 트리를 재귀적으로 검색할 수 있습니다.The utility method FindName, which is available from any FrameworkElement, can find any element by Name in the logical tree for that element, searching the tree recursively as necessary. 또는 Name 문자열을 인수로 사용 하는 LogicalTreeHelperFindLogicalNode 정적 메서드를 사용할 수 있습니다.Or you can use the FindLogicalNode static method of LogicalTreeHelper, which also takes a Name string as an argument.

일반적으로 사용 되는 루트 요소 (예:Window, Page)는 인터페이스 INameScope을 구현 합니다.Typically used root elements (Window, Page for example) implement the interface INameScope. 이 인터페이스의 구현은 해당 이름이 해당 범위 내에서 명확 하 게 적용 되도록 해야 합니다.Implementations of this interface are expected to enforce that names be unambiguous within their scope. 또한이 인터페이스를 정의 하는 루트 요소는 모든 관련 Api에 대 한 이름 범위 동작 경계를 정의 합니다.The root elements that define this interface also define the namescope behavior boundaries for all the related APIs.

또한 Name 속성은 다른 프로세스의 식별자로 사용 됩니다.The Name property also serves as an identifier for other processes. 예를 들어 WPFWPF 자동화 모델은 클라이언트 및 공급자에 대 한 AutomationId로 Name을 사용 합니다.For instance, the WPFWPF automation model will use Name as the AutomationId for clients and providers.

Name에 사용 되는 문자열 값에는 XAMLXAML 사양에 정의 된 기본 X:Name 지시문 에 의해 적용 되는 몇 가지 제한 사항이 있습니다.The string values used for Name have some restrictions, as imposed by the underlying x:Name Directive defined by the XAMLXAML specification. 특히 Name은 문자 또는 밑줄 문자 ()로 시작 해야 하며 문자, 숫자 또는 밑줄만 포함 해야 합니다.Most notably, a Name must start with a letter or the underscore character (), and must contain only letters, digits, or underscores. 자세한 내용은 WPF XAML 이름 범위를 참조하세요.For more information, see WPF XAML Namescopes.

Name는 애니메이션을 대상으로 하는 데 매우 중요 한 이름 자체가 기 때문에 애니메이션을 적용할 수 없는 몇 가지 종속성 속성 중 하나입니다 (IsAnimationProhibited true).Name is one of the very few dependency properties that cannot be animated (IsAnimationProhibited is true in metadata), because the name itself is vital for targeting an animation. Name 데이터 바인딩은 기술적으로 가능 하지만, 데이터 바인딩된 Name는 속성의 기본적인 용도를 제공할 수 없기 때문에 매우 드문 시나리오입니다. 코드 숨김으로 식별자 연결 지점을 제공 하는 것입니다.Data binding a Name is technically possible, but is an extremely uncommon scenario because a data-bound Name cannot serve the main intended purpose of the property: to provide an identifier connection point for code-behind.

종속성 속성 정보Dependency Property Information

식별자 필드Identifier field NameProperty
메타 데이터 속성 설정 trueMetadata properties set to true IsAnimationProhibited

적용 대상