FrameworkElement.Name Egenskap

Definition

Hämtar eller anger elementets identifieringsnamn. Namnet innehåller en referens så att kod bakom, till exempel händelsehanterarkod, kan referera till ett markeringselement när det har konstruerats under bearbetningen av en XAML-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; }
[<System.Windows.Localizability(System.Windows.LocalizationCategory.NeverLocalize)>]
member this.Name : string with get, set
Public Property Name As String

Egenskapsvärde

Namnet på elementet. Standardvärdet är en tom sträng.

Implementeringar

Attribut

Exempel

I följande exempel anges Name egenskapen i kod och sedan registreras namnet i den nyligen skapade NameScope genom att anropa RegisterName. Tekniken som illustreras här är ett krav för att animera med storyboards, eftersom storyboards kräver mål av Name, och kan inte riktas mot objektreferensen.

//  
// 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)

Kommentarer

Den vanligaste användningen av den här egenskapen är att ange ett XAML-elementnamn som ett attribut i markering.

Den här egenskapen tillhandahåller i princip en WPF bekvämlighetsegenskap på ramverksnivå som anger XAML-x:Name Directive.

Namn måste vara unika inom ett namnskop. Mer information finns i WPF XAML Namescopes.

Det är inte vanligt att hämta ett Name om du skapar element i kod. Om du redan har rätt referens i koden kan du bara anropa metoder och egenskaper för elementreferensen och behöver Namevanligtvis inte . Ett undantag till detta är om strängen Name har en överbelastad betydelse, till exempel om det är användbart att visa det namnet i användargränssnittet. Att ange en Name från bakomliggande kod om originalet Name angavs från markering rekommenderas inte heller, och om du ändrar egenskapen efter inläsningen av XAML ändras inte den ursprungliga objektreferensen. Objektreferenserna skapas endast när de underliggande namnskopen uttryckligen skapas under parsningen. Du måste specifikt anropa RegisterName för att göra en effektiv ändring av egenskapen för Name ett redan inläst element.

Ett viktigt fall där inställningen Name från kod är viktig är när du registrerar namn för element som storyboards körs mot, så att de kan refereras vid körning. Innan du kan registrera ett namn kan du också behöva instansiera och tilldela en NameScope instans. Se avsnittet Exempel eller Översikt över Storyboards.

Inställningen Name från kod har begränsade program, men det är vanligare att få ett element av Name . Ett visst scenario är om ditt program stöder en navigeringsmodell där sidor läses in igen i programmet och körningstidskoden inte nödvändigtvis är kod bakom definierad för den sidan. Verktygsmetoden FindName, som är tillgänglig från alla FrameworkElement, kan hitta alla element med Name i det logiska trädet för det elementet och söka i trädet rekursivt efter behov. Eller så kan du använda den FindLogicalNode statiska metoden LogicalTreeHelper, som också tar en Name sträng som argument.

Vanligtvis används rotelement (WindowPagetill exempel) implementera gränssnittet INameScope. Implementeringar av det här gränssnittet förväntas framtvinga att namnen är entydiga inom deras omfång. Rotelementen som definierar det här gränssnittet definierar också namnskopets beteendegränser för alla relaterade API:er.

Egenskapen Name fungerar också som identifierare för andra processer. Till exempel använder WPF automationsmodellen Name som AutomationId för klienter och leverantörer.

Strängvärdena som används för Name har vissa begränsningar, enligt det underliggande x:Name-direktivet som definieras av XAML-specifikationen. Framför allt måste en Name börja med en bokstav eller understreckstecknet (_), och får endast innehålla bokstäver, siffror eller understreck. Mer information finns i WPF XAML Namescopes.

Name är en av de mycket få beroendeegenskaper som inte kan animerad (IsAnimationProhibited finns true i metadata), eftersom själva namnet är viktigt för att rikta in sig på en animering. Databindning en Name är tekniskt möjlig, men är ett mycket ovanligt scenario eftersom en databunden Name inte kan tjäna det huvudsakliga avsedda syftet med egenskapen: att tillhandahålla en identifieraranslutningspunkt för kod bakom.

Information om beroendeegenskap

Objekt Value
Identifierarfält NameProperty
Metadataegenskaper inställda på true IsAnimationProhibited

Gäller för