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属性,然后通过调用RegisterName将名称注册到新创建NameScope的名称中。 此处所述的技术是使用情节提要进行动画处理的要求,因为情节提要需要按 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 指令

名称在名称范围中必须是唯一的。 有关详细信息,请参阅 WPF XAML Namescopes

Name如果在代码中创建元素并不常见,则获取该元素。 如果代码中已有适当的引用,则只需调用元素引用的方法和属性,并且通常不需要该 Name引用。 例外情况是, Name 如果字符串具有一些重载的含义,例如,如果在 UI 中显示该名称很有用。 Name如果未建议从标记设置原始Name内容,并且加载 XAML 后更改属性不会更改原始对象引用,则从代码隐藏设置。 仅当在分析期间显式创建基础名称范围时,才会创建对象引用。 必须专门调用 RegisterName 才能对已加载元素的属性进行有效的更改 Name

一个值得注意的 Name 案例是,在为情节提要运行的元素注册名称时,请务必注意这些名称,以便可以在运行时引用它们。 在注册名称之前,可能还需要实例化和分配 NameScope 实例。 请参阅“示例”部分或 情节提要概述

从代码设置 Name 具有有限的应用程序,但获取 Name 元素更常见。 一个特定方案是,如果应用程序支持导航模型,其中页面重新加载到应用程序中,并且运行时代码不一定为该页定义代码隐藏。 实用工具方法 FindName可从任意 FrameworkElement元素中找到任何元素,方法是在该元素 Name 的逻辑树中根据需要递归搜索。 或者,可以使用 FindLogicalNode 静态方法 LogicalTreeHelper,该方法也采用 Name 字符串作为参数。

通常使用根元素 (WindowPage 例如) 实现接口 INameScope。 此接口的实现应在其范围内强制实施名称明确。 定义此接口的根元素还定义所有相关 API 的名称范围行为边界。

Name 属性还充当其他进程的标识符。 例如,WPF 自动化模型将用作 Name 客户端和提供程序的 AutomationId。

用于 Name 的字符串值具有一些限制,由 XAML 规范定义的基础 x:Name 指令 施加。 最值得注意的是,必须 Name 以字母或下划线字符开头 (_) ,并且必须仅包含字母、数字或下划线。 有关详细信息,请参阅 WPF XAML Namescopes

Name 是无法对 (IsAnimationProhibited true 进行动画处理的极少数依赖项属性之一,位于元数据) 中,因为名称本身对于定位动画至关重要。 数据绑定 Name 在技术上是可能的,但这是一种极其罕见的方案,因为数据绑定 Name 不能为属性的主要用途提供服务:为代码隐藏提供标识符连接点。

依赖项属性信息

标识符字段 NameProperty
元数据属性设置为 true IsAnimationProhibited

适用于