Windows 应用
此文章由机器翻译。 将光标移到文章的句子上,以查看原文。 更多信息。
译文
原文
信息
您所需的主题如下所示。但此主题未包含在此库中。

FrameworkElement::Name 属性

 

获取或设置元素的标识名称。该名称提供一个引用,以便当 XAML 处理器在处理过程中构造标记元素之后,代码隐藏(如事件处理程序代码)可以对该元素进行引用。

命名空间:   System.Windows
程序集:  PresentationFramework(PresentationFramework.dll 中)

public:
[LocalizabilityAttribute(LocalizationCategory::NeverLocalize)]
property String^ Name {
	virtual String^ get() sealed;
	virtual void set(String^ value) sealed;
}

属性值

Type: System::String^

元素的名称。默认值为空字符串。

此属性的最常见用法是将 XAML 元素名称指定为标记中的特性。

此属性实质上提供一个 WPF 框架级简便属性来设置 XAML x:Name Directive

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

如果要在代码中创建元素,通常不会去获取 Name如果您在代码中已进行了相应的引用,则可以直接在元素引用中调用方法和属性,而通常并不需要 Name一种例外情况是 Name 字符串具有某种额外意义,例如,在 UI 中显示该名称很有用。如果原始 Name 是在标记中设置的,则建议不要在代码隐藏中设置 Name,并且在加载 XAML 之后更改此属性不会更改原始对象引用。仅当基础名称范围是在分析过程中显式创建的时候,才会创建该对象引用。您必须专门调用 RegisterName 以便对已加载元素的 Name 属性进行有效的更改。

非常需要在代码中设置 Name 的典型情况是:为演示图板将要赖以运行的元素注册名称,以便可以在运行时引用这些元素。在注册名称前,您也许还需要实例化并分配一个 NameScope 实例。请参见“示例”部分或演示图板概述

在代码中设置 Name 的应用范围很有限,但按 Name 获取元素十分常见。下面是一种具体情况:应用程序支持这样一种导航模型,其中,页面重新加载到应用程序中,而运行时代码未必是为该页面定义的代码隐藏。实用工具方法 FindName 可从任意 FrameworkElement 中获得,该方法能够根据需要递归地搜索任何元素的逻辑树,从而在树中按照此元素的 Name 找到此元素。您还可以使用 LogicalTreeHelperFindLogicalNode 静态方法,该方法也采用一个 Name 字符串作为参数。

通常使用的根元素(如 WindowPage)实现了接口 INameScope此接口的实现需要强制该名称在其范围中明确无误。定义此接口的根元素还为所有相关 APIs 定义了名称范围行为边界。

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

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

Name 是极少数无法进行动画处理的依赖项属性中的一个(在元数据中,IsAnimationProhibitedtrue),因为名称本身对于定位动画至关重要。Name 进行数据绑定在技术上是可行的,但这是一种极为少见的方案,因为数据绑定 Name 无法为属性的以下主要预期用途做出贡献:为代码隐藏提供标识符连接点。

标识符字段

NameProperty

设置为 true 的元数据属性

IsAnimationProhibited

下面的示例在代码中设置 Name 属性,然后通过调用 RegisterName 将该名称注册到新创建的 NameScope 中。此处演示的技术是对演示图板进行动画处理所必需的,因为演示图板要求按 Name 定位,而无法按对象引用定位。

目前没有可用的代码示例或不支持该语言。

.NET Framework
3.0 后可用
Silverlight
2.0 后可用
Windows Phone Silverlight
7.0 后可用
返回页首
显示:
© 2016 Microsoft