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 в коде, а затем имя регистрируется во вновь созданном 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.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 будет использовать 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. Привязка данных 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

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