FrameworkElement.Name FrameworkElement.Name FrameworkElement.Name FrameworkElement.Name Property

Definizione

Ottiene o imposta il nome identificativo dell'elemento.Gets or sets the identifying name of the element. Il nome fornisce un riferimento, in modo che il code-behind, ad esempio il codice di un gestore eventi, possa fare riferimento a un elemento di markup dopo la sua creazione durante l'elaborazione tramite un processore di 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

Valore della proprietà

Nome dell'elemento.The name of the element. Il valore predefinito è una stringa vuota.The default is an empty string.

Implementazioni

Esempi

Nell'esempio seguente viene impostata Name la proprietà nel codice e quindi viene registrato il nome nell'oggetto appena NameScope creato RegisterNamechiamando.The following example sets the Name property in code, and then registers the name into the newly created NameScope by calling RegisterName. La tecnica illustrata di seguito è un requisito per l'animazione con gli storyboard, perché gli storyboard richiedono la destinazione Nameda e non possono essere assegnati a un riferimento a un oggetto.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)

Commenti

L'utilizzo più comune di questa proprietà è quello di specificare XAMLXAML il nome di un elemento come attributo nel markup.The most common usage of this property is to specify a XAMLXAML element name as an attribute in markup.

Questa proprietà fornisce essenzialmente una proprietà di praticità a livello di Framework WPF XAMLXAML per impostare la direttiva x:Name.This property essentially provides a WPF framework-level convenience property to set the XAMLXAML x:Name Directive.

I nomi devono essere univoci all'interno di un NameScope.Names must be unique within a namescope. Per altre informazioni, vedere Ambiti dei nomi XAML di WPF.For more information, see WPF XAML Namescopes.

Il recupero Name di un oggetto se si creano elementi nel codice non è comune.Getting a Name if you are creating elements in code is not common. Se è già presente un riferimento appropriato nel codice, è possibile chiamare solo metodi e proprietà sul riferimento all'elemento e in genere non è necessario 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. Un'eccezione è rappresentata dal caso Name in cui la stringa abbia un significato di overload, ad esempio se è utile visualizzare tale nome in Interfaccia utenteUI.An exception to this is if the Name string has some overloaded meaning, for instance if it is useful to display that name in Interfaccia utenteUI. Anche l' Name impostazione di un oggetto dal code- Name behind se l'originale è stato impostato dal markup non è consigliata e la modifica XAMLXAML della proprietà dopo il caricamento di non modificherà il riferimento all'oggetto originale.Setting 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. I riferimenti agli oggetti vengono creati solo quando i NameScope sottostanti vengono creati in modo esplicito durante l'analisi.The object references are created only when the underlying namescopes are explicitly created during parsing. È necessario chiamare RegisterName in modo specifico per apportare una modifica effettiva Name alla proprietà di un elemento già caricato.You must specifically call RegisterName to make an effective change to the Name property of an already loaded element.

Un caso rilevante in cui Name l'impostazione dal codice è importante quando si registrano nomi per gli elementi su cui verranno eseguiti gli storyboard, in modo che sia possibile farvi riferimento in fase di esecuzione.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. Prima di poter registrare un nome, potrebbe anche essere necessario creare un'istanza di e NameScope assegnare un'istanza di.Before you can register a name, might also need to instantiate and assign a NameScope instance. Vedere la sezione di esempio o Cenni preliminari sugli storyboard.See the Example section, or Storyboards Overview.

L' Name impostazione dal codice ha applicazioni limitate, ma il recupero di Name un elemento da è più comune.Setting Name from code has limited applications, but getting an element by Name is more common. Un particolare scenario è se l'applicazione supporta un modello di navigazione in cui le pagine vengono ricaricate nell'applicazione e il codice di runtime non è necessariamente code-behind definito per la pagina.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. Il metodo FindNamedi utilità, disponibile da qualsiasi FrameworkElement, è in grado di Name trovare qualsiasi elemento nell'albero logico per l'elemento, cercando in modo ricorsivo l'albero se necessario.The 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. In alternativa, è possibile FindLogicalNode usare il metodo LogicalTreeHelperstatico di, che accetta Name anche una stringa come argomento.Or you can use the FindLogicalNode static method of LogicalTreeHelper, which also takes a Name string as an argument.

Gli elementiWindowradice usati in genere Page , ad esempio, implementano INameScopel'interfaccia.Typically used root elements (Window, Page for example) implement the interface INameScope. Le implementazioni di questa interfaccia devono imporre che i nomi non siano ambigui nell'ambito.Implementations of this interface are expected to enforce that names be unambiguous within their scope. Gli elementi radice che definiscono questa interfaccia definiscono anche i limiti del comportamento dell'ambito dei nomi APIAPIsper tutti gli elementi correlati.The root elements that define this interface also define the namescope behavior boundaries for all the related APIAPIs.

La Name proprietà funge anche da identificatore per altri processi.The Name property also serves as an identifier for other processes. Ad esempio, il WPFWPF modello Name di automazione utilizzerà come AutomationId per client e provider.For instance, the WPFWPF automation model will use Name as the AutomationId for clients and providers.

I valori stringa utilizzati per Name presentano alcune restrizioni, come imposto dalla direttiva x:Name sottostante definita dalla XAMLXAML specifica.The string values used for Name have some restrictions, as imposed by the underlying x:Name Directive defined by the XAMLXAML specification. In particolare, un Name deve iniziare con una lettera o con il carattere di sottolineatura () e deve contenere solo lettere, cifre o caratteri di sottolineatura.Most notably, a Name must start with a letter or the underscore character (), and must contain only letters, digits, or underscores. Per altre informazioni, vedere Ambiti dei nomi XAML di WPF.For more information, see WPF XAML Namescopes.

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

Informazioni proprietà di dipendenzaDependency Property Information

Campo identificatoreIdentifier field NameProperty
Proprietà dei metadati impostate sutrueMetadata properties set to true IsAnimationProhibited

Si applica a