FrameworkElement.Name FrameworkElement.Name FrameworkElement.Name FrameworkElement.Name Property

Определение

Возвращает или задает имя, обозначающее элемент.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 свойство задается в коде, а затем имя регистрируется в вновь созданном NameScope вызове метода RegisterName.The following example sets the Name property in code, and then registers the name into the newly created NameScope by calling RegisterName. Здесь показана методика для анимации с помощью раскадровок, так как раскадровка требует целевой Nameобъект и не может быть нацелена на ссылку на объект.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.

Это свойство по сути предоставляет удобное свойство на уровне инфраструктуры WPF для установки XAMLXAML директивы x:Name.This property essentially provides a WPF framework-level convenience property to set the XAMLXAML x:Name Directive.

Имена должны быть уникальными в пределах области имен.Names must be unique within a namescope. Более подробную информацию см. в разделе Области видимости имен XAML в WPF.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 то, что в строке есть перегруженное значение, например, если полезно отобразить это имя в ИПUI.An exception to this is if the Name string has some overloaded meaning, for instance if it is useful to display that name in ИПUI. Задание из 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. Необходимо специально вызвать метод RegisterName , чтобы внести эффективное изменение Name в свойство уже загруженного элемента.You must specifically call RegisterName to make an effective change to the Name property of an already loaded element.

Один из важных случаев, Name когда важна Настройка из кода, — это регистрация имен элементов, для которых будут выполняться раскадровки, чтобы на них можно было ссылаться во время выполнения.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. См. раздел "пример" или Общие сведения о раскадровках.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. Служебный метод FindName, доступный из любого FrameworkElement, 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. Или можно использовать FindLogicalNode статический LogicalTreeHelperметод метода Name , который также принимает строку в качестве аргумента.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 - интерфейсыAPIsвсех связанных.The root elements that define this interface also define the namescope behavior boundaries for all the related API - интерфейсыAPIs.

Name Свойство также служит идентификатором для других процессов.The Name property also serves as an identifier for other processes. Например, WPFWPF модель автоматизации будет использоваться Name в качестве AutomationId для клиентов и поставщиков.For instance, the WPFWPF automation model will use Name as the AutomationId for clients and providers.

Строковые значения, используемые Name для, имеют некоторые ограничения, накладываемые базовой директивой x:Name , определенной XAMLXAML спецификацией.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. Более подробную информацию см. в разделе Области видимости имен XAML в WPF.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. Привязка данных a 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

Применяется к