次の方法で共有


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

プロパティ値

要素の名前。 既定値は空の文字列です。

実装

属性

次の例では、コードで 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 要素名を指定することです。

このプロパティは基本的に、XAML x:Name ディレクティブを設定するための WPF フレームワーク レベルの便利なプロパティを提供します。

名前は名前スコープ内で一意である必要があります。 詳細については、「 WPF XAML 名前スコープ」を参照してください。

コードで要素を作成する場合に Name を取得することは一般的ではありません。 コードに適切な参照が既にある場合は、要素参照でメソッドとプロパティを呼び出すだけで、通常は Nameは必要ありません。 これに対する例外は、 Name 文字列に何らかのオーバーロードされた意味がある場合です。たとえば、その名前を UI に表示すると便利な場合です。 元のNameがマークアップから設定されている場合は、分離コードからNameを設定することもお勧めしません。XAML の読み込み後にプロパティを変更しても、元のオブジェクト参照は変更されません。 オブジェクト参照は、解析中に基になる名前スコープが明示的に作成された場合にのみ作成されます。 既に読み込まれている要素のName プロパティを有効に変更するには、RegisterNameを明示的に呼び出す必要があります。

コードから Name を設定することが重要な 1 つの重要なケースは、ストーリーボードが実行される要素の名前を登録して実行時に参照できるようにする場合です。 名前を登録する前に、 NameScope インスタンスをインスタンス化して割り当てる必要がある場合もあります。 「サンプル」セクションまたは 「ストーリーボードの概要」を参照してください。

コードから Name を設定するアプリケーションは限られていますが、 Name によって要素を取得する方が一般的です。 特定のシナリオの 1 つは、ページをアプリケーションに再読み込みするナビゲーション モデルをアプリケーションがサポートしていて、実行時コードがそのページに対して定義されている分離コードであるとは限らない場合です。 任意のFrameworkElementから使用できるユーティリティ メソッド FindNameは、その要素の論理ツリーでNameして、必要に応じてツリーを再帰的に検索することで、任意の要素を検索できます。 または、LogicalTreeHelperFindLogicalNode静的メソッドを使用することもできます。Name文字列も引数として受け取ります。

通常使用されるルート要素 (WindowPage など) は、インターフェイス INameScopeを実装します。 このインターフェイスの実装では、そのスコープ内で名前が明確であることを強制することが期待されます。 このインターフェイスを定義するルート要素は、関連するすべての API の名前スコープの動作境界も定義します。

Name プロパティは、他のプロセスの識別子としても機能します。 たとえば、WPF オートメーション モデルでは、クライアントとプロバイダーの AutomationId として Name が使用されます。

Nameに使用される文字列値には、XAML 仕様で定義された基になる x:Name ディレクティブによって課されるいくつかの制限があります。 特に、 Name は文字またはアンダースコア文字 (_) で始まる必要があり、文字、数字、またはアンダースコアのみを含める必要があります。 詳細については、「 WPF XAML 名前スコープ」を参照してください。

Name はアニメーション化できないごく少数の依存関係プロパティの 1 つです (IsAnimationProhibited はメタデータに true されます)。これは、名前自体がアニメーションを対象とするために不可欠であるためです。 Nameのデータ バインディングは技術的には可能ですが、非常に珍しいシナリオです。データ バインドNameは、分離コードの識別子接続ポイントを提供するプロパティの主な目的を果たすことができないためです。

依存関係プロパティ情報

品目 価値
識別子フィールド NameProperty
に設定されたメタデータ プロパティ true IsAnimationProhibited

適用対象