Skip to content

1. Juli 2010

Der Unterschied zwischen x:Name und Name in WPF

x:Name und Name benutzen unterschiedliche Namespaces.  „x:Name“ referenziert den

x Namespace  (xmlns:x=“http://schemas.microsoft.com/winfx/2006/xaml“),

während „Name“ den

Standardnamespace benutzt (xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation“).

Das x: vor X:Name ist ja auch nur die Anweisung, den Namespace x zu nutzen.

So, nachdem das geklärt wäre, gilt es nur noch den Unterschied heraus zu finden.  Schauen wir es uns am Beispiel eines Buttons an. Hier mal die Hierarchie des Button-Elementes:

  • Button : ButtonBase
  • ButtonBase : ContentControl, ICommandSource
  • ContentControl : Control, IAddChild
  • Control : FrameworkElement
  • FrameworkElement : UIElement, IFrameworkInputElement, IInputElement, ISupportInitialize, IHaveResources

Der Control namespace ist im x: Namespace enthalten, FrameworkElement und Button sind im Standardnamespace enthalten.  Da abgeleitete Klassen Properties von ihren Eltern übernehmen (sofern passend deklariert), hat der Button den selben Namen wie das FramworkElement. Somit verweisen zwei Attribute in zwei Namespaces auf die selbe Eigenschaft, und es gibt keinen Unterschied zwischen x:Name und Name.

Kommentar verfassen