Condividi tramite


FrameworkElement.Name Proprietà

Definizione

Ottiene o imposta il nome di identificazione dell'elemento. Il nome fornisce un riferimento in modo che 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à

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

Implementazioni

Attributi

Esempio

Nell'esempio seguente viene impostata la Name proprietà 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'utilizzo più comune di questa proprietà consiste nel specificare un nome di elemento XAML come attributo nel markup.

Questa proprietà fornisce essenzialmente una proprietà di praticità 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 WPF.

Ottenere un oggetto Name se si stanno creando elementi nel codice non è comune. Se nel codice è già presente il riferimento appropriato, è sufficiente chiamare metodi e proprietà sul 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. Non è consigliabile impostare un Name oggetto da code-behind se l'originale Name è stato impostato dal markup 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 specificamente per apportare una modifica efficace alla Name proprietà di un elemento già caricato.

Un caso rilevante in cui l'impostazione Name dal codice è importante quando si registrano nomi per gli elementi in cui verranno eseguiti gli storyboard, in modo che possano essere a cui è possibile fare riferimento in fase di esecuzione. Prima di poter registrare un nome, potrebbe anche essere necessario creare un'istanza e assegnare un'istanza NameScope . Vedere la sezione Esempio o Cenni preliminari sugli storyboard.

L'impostazione Name dal codice ha 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 code-behind per tale pagina. Il metodo FindNamedi utilità , disponibile da qualsiasi FrameworkElement, 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 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 code-behind.

Informazioni sulle proprietà di dipendenza

Elemento Valore
Campo Identificatore NameProperty
Proprietà dei metadati impostate su true IsAnimationProhibited

Si applica a