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.

12voto

Name :

  1. kann nur für Abkömmlinge von FrameworkElement und FrameworkContentElement verwendet werden;
  2. kann von Code-Behind über SetValue() und property-like gesetzt werden.

x:Name :

  1. kann für fast alle XAML-Elemente verwendet werden;
  2. kann NICHT von Code-Behind über SetValue() gesetzt werden; es kann nur über die Attribut Syntax auf Objekte gesetzt werden, da es sich um eine Richtlinie handelt.

Die Verwendung beider Direktiven in XAML für ein FrameworkElement oder FrameworkContentElement führt zu einer Ausnahme: Wenn die XAML mit Markup kompiliert ist, tritt die Ausnahme beim Kompilieren des Markups auf, andernfalls beim Laden.

8voto

Bipul Kumar Punkte 81

Der einzige Unterschied ist, dass, wenn Sie mit Benutzer-Steuerelemente in ein Steuerelement von Same Assembly dann Name nicht identifizieren Ihr Steuerelement und Sie erhalten eine Fehlermeldung "Verwenden Sie x:Name für Steuerelemente in der gleichen Assembly". Also x:Name ist die WPF-Versionierung der Benennung von Steuerelementen in WPF. Name wird nur als Winform Legacy verwendet. Sie wollten die Benennung von Steuerelementen in WPF und Winforms unterscheiden, da sie Attribute in Xaml verwenden, um Steuerelemente aus anderen Assemblys zu identifizieren, die sie x: für Namen von Steuerelementen verwendet.

Denken Sie daran, dass Sie keinen Namen für ein Steuerelement eingeben sollten, nur um es zu behalten, da es im Speicher als leeres Feld gespeichert ist und Sie eine Warnung erhalten, dass der Name für ein Steuerelement eingegeben wurde, das jedoch nie verwendet wurde.

8voto

itzmebibin Punkte 8618

x:Name bedeutet: ein Feld im dahinter liegenden Code erstellen, das einen Verweis auf dieses Objekt enthält.

Name bedeutet: Setzen der Eigenschaft name dieses Objekts.

4voto

Simon Punkte 142

Ich verwende immer die Variante x:Name. Ich habe keine Ahnung, ob sich das auf die Leistung auswirkt, ich finde es nur aus folgendem Grund einfacher. Wenn Sie Ihre eigenen Benutzersteuerelemente haben, die sich in einer anderen Assembly befinden, wird die Eigenschaft "Name" nicht immer ausreichen. Dies macht es einfacher, einfach die Eigenschaft x:Name zu verwenden.

3voto

Robert MacLean Punkte 38545

Es handelt sich nicht um ein WPF-Element, sondern um ein Standard-XML-Element und BtBh richtig beantwortet hat, bezieht sich x auf den Standard-Namensraum. Wenn Sie in XML einem Element/Attribut keinen Namespace voranstellen, wird angenommen, dass Sie den Standard-Namespace verwenden wollen. Geben Sie also einfach Name ist nichts weiter als eine Abkürzung für x:Name . Weitere Einzelheiten zu XML-Namespaces finden Sie unter Linktext

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