FrameworkElement.Name Свойство

Определение

Возвращает или задает имя, обозначающее элемент. Имя предоставляет ссылку, чтобы код программной части, например код обработчика событий, может ссылаться на элемент разметки после его создания во время обработки обработчиком XAML.

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; }
[<System.Windows.Localizability(System.Windows.LocalizationCategory.NeverLocalize)>]
member this.Name : string with get, set
Public Property Name As String

Значение свойства

String

Имя элемента. Значение по умолчанию - пустая строка.

Реализации

Атрибуты

Примеры

В следующем примере задается Name свойство в коде, а затем регистрируется имя в только что созданном путем NameScope вызова RegisterName. Здесь показан метод анимации с раскадровками, так как раскадровки требуют нацеливания на Nameобъект и не могут быть ориентированы по ссылке на объект.

//  
// 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)

Комментарии

Чаще всего это свойство используется для указания имени элемента XAML в виде атрибута в разметке.

Это свойство по сути предоставляет свойство удобства на уровне платформы WPF для задания директивы XAML x:Name.

Имена должны быть уникальными в области имен. Более подробную информацию см. в разделе Области видимости имен XAML в WPF.

Name Получение элемента, если вы создаете элементы в коде, не является общим. Если у вас уже есть соответствующая ссылка в коде, можно просто вызвать методы и свойства ссылки на элемент и, как правило, не потребуется Name. Исключением является то, что Name строка имеет перегруженное значение, например, если это полезно для отображения этого имени в пользовательском интерфейсе. Если исходный Name Name код был задан из разметки, также не рекомендуется, а изменение свойства после загрузки XAML не приведет к изменению исходной ссылки на объект. Ссылки на объекты создаются только при явном создании базовых областей имен во время синтаксического анализа. Необходимо специально вызвать RegisterName , чтобы внести эффективное изменение Name в свойство уже загруженного элемента.

Один из важных случаев, когда параметр Name из кода важен при регистрации имен для элементов, для которых будут выполняться раскадровки, чтобы на них можно было ссылаться во время выполнения. Прежде чем зарегистрировать имя, может потребоваться создать экземпляр и назначить NameScope экземпляр. См. раздел "Пример" или "Обзор раскадровки".

Настройка Name из кода имеет ограниченные приложения, но получение элемента по Name чаще всего. Один из конкретных сценариев заключается в том, что приложение поддерживает модель навигации, в которой страницы перезагружаются в приложение, а код времени выполнения не обязательно определяется кодом программной части для этой страницы. Служебный метод FindName, доступный из любого FrameworkElementэлемента, может найти любой элемент Name в логическом дереве для этого элемента, выполняя рекурсивный поиск дерева по мере необходимости. Или можно использовать статический FindLogicalNode метод LogicalTreeHelper, который также принимает Name строку в качестве аргумента.

Обычно используются корневые элементы (Windowнапример), Page реализующие интерфейс INameScope. Реализации этого интерфейса должны обеспечивать однозначные имена в их области. Корневые элементы, определяющие этот интерфейс, также определяют границы поведения области имен для всех связанных API.

Свойство Name также служит идентификатором для других процессов. Например, модель автоматизации WPF будет использоваться Name в качестве Идентификатора автоматизации для клиентов и поставщиков.

Строковые значения, используемые для Name некоторых ограничений, накладываются базовой директивой x:Name , определенной спецификацией XAML. В частности, Name должен начинаться с буквы или символа подчеркивания (_) и содержать только буквы, цифры или символы подчеркивания. Более подробную информацию см. в разделе Области видимости имен XAML в WPF.

Name является одним из немногих свойств зависимостей, которые нельзя анимировать (IsAnimationProhibited находится true в метаданных), так как само имя имеет жизненно важное значение для нацеливания на анимацию. Привязка Name данных технически возможна, но является крайне редким сценарием, так как привязка Name к данным не может служить основной целевой целью свойства: для предоставления точки подключения идентификатора для кода программной части.

Сведения о свойстве зависимостей

Поле идентификатора NameProperty
Для свойств метаданных задано значение true IsAnimationProhibited

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