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 要素名を指定することです。

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

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

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

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

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

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

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

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

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

依存プロパティ情報

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

適用対象