650 Stimmen

Was sind in WPF die Unterschiede zwischen den Attributen x:Name und Name?

Manchmal scheint es, dass die Name y x:Name Attribute sind austauschbar.

Worin bestehen also die entscheidenden Unterschiede zwischen den beiden und wann ist es besser, die eine als die andere zu verwenden?

Gibt es irgendwelche Auswirkungen auf die Leistung oder den Speicher, wenn man sie falsch verwendet?

1 Stimmen

Die Antworten legen nahe, dass die Verwendung x:Name funktioniert die ganze Zeit über gut. Ich musste es nur ändern in Name Andernfalls konnte ich das Steuerelement in meinem .xaml.cs-Code nicht referenzieren, also gehe ich davon aus, dass es nicht mehr der Fall ist, dass es die ganze Zeit gut funktioniert.

2voto

Edd Punkte 593

Die angegebene x:Name wird zum Namen eines Feldes, das im zugrunde liegenden Code erstellt wird, wenn XAML verarbeitet wird, und dieses Feld enthält einen Verweis auf das Objekt. In Silverlight wird der Prozess der Erstellung dieses Feldes unter Verwendung der verwalteten API von den MSBuild-Zielschritten durchgeführt, die auch für das Zusammenführen der Teilklassen für eine XAML-Datei und deren Code-Behind verantwortlich sind. Dieses Verhalten ist nicht unbedingt durch die XAML-Sprache vorgegeben; es ist die spezielle Implementierung, die Silverlight verwendet, um x:Name in seinen Programmier- und Anwendungsmodellen.

Lesen Sie mehr auf MSDN...

2voto

RockyMan Rocky Punkte 29

Wenn Sie ein Button-Element in XAML deklarieren, beziehen Sie sich auf eine in der Windows-Laufzeit definierte Klasse namens Button.

Die Schaltfläche hat viele Attribute wie Hintergrund, Text, Rand, ..... und ein Attribut namens Name.

Wenn Sie nun eine Schaltfläche in XAML deklarieren, ist das wie die Erstellung eines anonymen Objekts, das zufällig ein Attribut namens Name hat.

Im Allgemeinen können Sie nicht auf ein anonymes Objekt verweisen, aber im WPF-Framework ermöglicht es Ihnen der XAML-Prozessor, auf dieses Objekt zu verweisen, egal welchen Wert Sie dem Attribut Name gegeben haben.

So weit, so gut.

Eine andere Möglichkeit, ein Objekt zu erstellen, ist die Erstellung eines benannten Objekts anstelle eines anonymen Objekts. In diesem Fall hat der XAML-Namensraum ein Attribut für ein Objekt namens Name (und da es im XAML-Namensraum liegt, also X:), das Sie festlegen können, damit Sie Ihr Objekt identifizieren und darauf verweisen können.

Schlussfolgerung:

Name ist ein Attribut eines bestimmten Objekts, aber X:Name ist ein Attribut dieses Objekts (es gibt eine Klasse, die ein allgemeines Objekt definiert).

1voto

daddycardona Punkte 291

Eine der Antworten ist, dass x:name in verschiedenen Programmiersprachen wie c# verwendet werden soll und name für den Rahmen verwendet werden soll. Ehrlich gesagt hört sich das für mich so an.

0voto

Phuc Hoang Punkte 47

Meine Forschung ist x:Name comme weltweit variabel. Allerdings, Name comme . variabel. Bedeutet das, dass x:Name überall in Ihrer XAML-Datei aufgerufen werden kann, aber Name nicht.
Ejemplo:

<StackPanel>
<TextBlock Text="{Binding Path=Content, ElementName=btn}" />
<Button Content="Example" Name="btn" />
</StackPanel>
<TextBlock Text="{Binding Path=Content, ElementName=btn}" />

Sie können nicht Binding Eigenschaft Content de Button mit Name ist "btn", weil es außerhalb StackPanel

0voto

Ali Safari Punkte 1122

Name kann auch über die Syntax von Eigenschaftselementen mit innerem Text festgelegt werden, was aber eher unüblich ist. Im Gegensatz dazu, x:Name kann nicht eingestellt werden in XAML Syntax des Eigenschaftselements oder im Code mit SetValue Es kann nur über die Attributsyntax für Objekte gesetzt werden, da es sich um eine Richtlinie .
Wenn Name ist als Eigenschaft der Klasse verfügbar, Name y x:Name kann verwendet werden austauschbar als Attribute, aber es kommt zu einer Parse-Ausnahme, wenn beide für dasselbe Element angegeben werden. Wenn die XAML mit Markup kompiliert ist, tritt die Ausnahme bei der Kompilierung des Markups auf, andernfalls beim Laden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X