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 、コードでプロパティを設定し、を呼び出しRegisterNameて、新しくNameScope作成されたに名前を登録します。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.

このプロパティは、基本的に、 XAMLXAML x:Name ディレクティブを設定するための WPF フレームワークレベルの便宜的なプロパティを提供します。This property essentially provides a WPF framework-level convenience property to set the XAMLXAML x:Name Directive.

名前スコープ内で一意である必要があります。Names must be unique within a namescope. 詳細については、「 WPF XAML 名前スコープ」を参照してください。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文字列にオーバーロードされた意味がある場合、たとえば、にUIUIその名前を表示すると便利な場合に発生します。An exception to this is if the Name string has some overloaded meaning, for instance if it is useful to display that name in UIUI. Name XAMLXAMLのがマークアップから設定されている場合は、分離コードからを設定することもお勧めしません。を読み込んだ後にプロパティを変更しても、元のオブジェクト参照は変更されません。 NameSetting 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. 既に読み込まれRegisterNameNameいる要素のプロパティを有効に変更するには、明示的にを呼び出す必要があります。You must specifically call RegisterName to make an effective change to the Name property of an already loaded element.

コードから設定Nameすることが重要なケースの1つは、ストーリーボードが実行時に参照できるように、ストーリーボードが実行される要素の名前を登録する場合です。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 Nameのから使用できるユーティリティメソッドは、要素の論理ツリー内の任意の要素を検索し、必要に応じてツリーを再帰的に検索できます。 FrameworkElementThe 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. このインターフェイスを定義するルート要素は、関連するAPIAPIsすべてのの名前スコープの動作の境界も定義します。The root elements that define this interface also define the namescope behavior boundaries for all the related APIAPIs.

プロパティ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使用される文字列値には、 XAMLXAML仕様で定義されている、基になるx:Name ディレクティブによって課されるいくつかの制限があります。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. 詳細については、「 WPF XAML 名前スコープ」を参照してください。For more information, see WPF XAML Namescopes.

Nameは、アニメーションを対象とするために必要な名前でIsAnimationProhibitedあるtrueため、アニメーション化できない (メタデータ内にある) 非常に少数の依存関係プロパティの1つです。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

適用対象