FrameworkElement.Name Proprietà

Definizione

Ottiene o imposta il nome identificativo dell'elemento. Il nome fornisce un riferimento in modo che il code-behind, ad esempio il codice del gestore eventi, possa fare riferimento a un elemento di markup dopo che è stato costruito durante l'elaborazione da un processore 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

Valore della proprietà

String

Nome dell'elemento. Il valore predefinito è una stringa vuota.

Implementazioni

Attributi

Esempio

Nell'esempio seguente la Name proprietà viene impostata nel codice e quindi viene registrato il nome nell'oggetto appena creato NameScope chiamando RegisterName. La tecnica illustrata di seguito è un requisito per l'animazione con storyboard, perché gli storyboard richiedono la destinazione da e non possono essere destinati al riferimento all'oggetto 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)

Commenti

L'uso più comune di questa proprietà consiste nel specificare un nome di elemento XAML come attributo nel markup.

Questa proprietà fornisce essenzialmente una proprietà pratica a livello di framework WPF per impostare la direttiva x:Name XAML.

I nomi devono essere univoci all'interno di un ambito dei nomi. Per altre informazioni, vedere Ambiti dei nomi XAML di WPF.

Ottenere un oggetto Name se si creano elementi nel codice non è comune. Se nel codice è già presente il riferimento appropriato, è possibile chiamare solo metodi e proprietà nel riferimento all'elemento e in genere non sarà necessario .Name Un'eccezione è se la Name stringa ha un significato di overload, ad esempio se è utile visualizzare tale nome nell'interfaccia utente. L'impostazione di un Name oggetto da code-behind se l'originale Name è stato impostato dal markup non è consigliato e la modifica della proprietà dopo il caricamento del codice XAML non modificherà il riferimento all'oggetto originale. I riferimenti all'oggetto vengono creati solo quando gli ambiti dei nomi sottostanti vengono creati in modo esplicito durante l'analisi. È necessario chiamare RegisterName in modo specifico per apportare una modifica efficace alla Name proprietà di un elemento già caricato.

Un caso importante in cui l'impostazione Name dal codice è importante consiste nel registrare i nomi per gli elementi in cui verranno eseguiti gli storyboard, in modo da poter fare riferimento in fase di esecuzione. Prima di poter registrare un nome, potrebbe essere necessario creare un'istanza e assegnare un'istanza NameScope di . Vedere la sezione Esempio o Panoramica degli storyboard.

L'impostazione Name dal codice include applicazioni limitate, ma il recupero di un elemento da Name è più comune. Uno scenario specifico è se l'applicazione supporta un modello di navigazione in cui le pagine vengono ricaricate nell'applicazione e il codice di runtime non è necessariamente definito dal code-behind per tale pagina. Il metodo FindNamedi utilità , disponibile da qualsiasi FrameworkElementelemento , può trovare qualsiasi elemento Name nell'albero logico per tale elemento, eseguendo una ricerca ricorsiva dell'albero in base alle esigenze. In alternativa, è possibile usare il FindLogicalNode metodo statico di LogicalTreeHelper, che accetta anche una Name stringa come argomento.

In genere, gli elementi radice usati (WindowPagead esempio) implementano l'interfaccia INameScope. È previsto che le implementazioni di questa interfaccia applichino che i nomi non siano ambigui all'interno dell'ambito. Gli elementi radice che definiscono questa interfaccia definiscono anche i limiti del comportamento dell'ambito dei nomi per tutte le API correlate.

La Name proprietà funge anche da identificatore per altri processi. Ad esempio, il modello di automazione WPF userà Name come AutomationId per client e provider.

I valori stringa usati per Name hanno alcune restrizioni, come imposto dalla direttiva x:Name sottostante definita dalla specifica XAML. In particolare, un Name deve iniziare con una lettera o il carattere di sottolineatura (_) e deve contenere solo lettere, cifre o caratteri di sottolineatura. Per altre informazioni, vedere Ambiti dei nomi XAML di WPF.

Name è una delle poche proprietà di dipendenza che non possono essere animate (IsAnimationProhibited è true nei metadati), perché il nome stesso è fondamentale per la destinazione di un'animazione. Il data binding è Name tecnicamente possibile, ma è uno scenario estremamente insolito perché un data-bound Name non può soddisfare lo scopo principale della proprietà: fornire un punto di connessione identificatore per il code-behind.

Informazioni proprietà di dipendenza

Campo Identificatore NameProperty
Proprietà dei metadati impostate su true IsAnimationProhibited

Si applica a