x: Nom et Nom font référence à des espaces de noms différents.
x: nom est une référence à l'espace de noms x défini par défaut en haut du fichier Xaml.
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Dire simplement que Name utilise l'espace de noms par défaut ci-dessous.
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x: Nom signifie utiliser l'espace de noms qui a le x alias . x est la valeur par défaut et la plupart des gens la quittent, mais vous pouvez la changer en ce que vous voulez
xmlns:foo="http://schemas.microsoft.com/winfx/2006/xaml"
donc votre référence serait foo: nom
Définir et utiliser des espaces de noms dans WPF
OK, regardons cela différemment. Supposons que vous glissiez et déposiez un bouton sur votre page Xaml. Vous pouvez référencer ce 2 façons x: nom et nom . Tous les xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" et
xmlns: x = "http://schemas.microsoft.com/winfx/2006/xaml" sont des références à plusieurs espaces de noms . Étant donné que xaml contient l' espace de noms Control (pas 100% sur cela) et la présentation contient FrameworkElement ET la classe Button a un modèle d'héritage de:
Button : ButtonBase
ButtonBase : ContentControl, ICommandSource
ContentControl : Control, IAddChild
Control : FrameworkElement
FrameworkElement : UIElement, IFrameworkInputElement,
IInputElement, ISupportInitialize, IHaveResources
Donc, comme on pourrait s'y attendre, tout ce qui hérite de FrameworkElement aurait accès à tous ses attributs publics. ainsi, dans le cas de Button, il obtient son attribut Name de FrameworkElement, tout en haut de l'arborescence de la hiérarchie. Ainsi , vous pouvez dire x: Nom ou nom et ils seront à la fois être l' accès au getter / setter de la FrameworkElement.
Référence MSDN
WPF définit un attribut CLR utilisé par les processeurs XAML afin de mapper plusieurs espaces de noms CLR à un seul espace de noms XML. L' attribut XmlnsDefinitionAttribute est placé au niveau de l'assembly dans le code source qui produit l'assembly. Le code source de l'assembly WPF utilise cet attribut pour mapper les divers espaces de noms courants, tels que System.Windows et System.Windows.Controls, à la espace de noms http://schemas.microsoft.com/winfx/2006/xaml/presentation .
Ainsi, les attributs d'assemblage ressembleront à:
PresentationFramework.dll - XmlnsDefinitionAttribute:
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Data")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Navigation")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Shapes")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Documents")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Controls")]
x:Name
tout le temps fonctionne bien. Je viens de devoir le changerName
sinon je ne pourrais pas référencer le contrôle dans mon code .xaml.cs donc je vais supposer que ce n'est plus le cas qu'il fonctionne bien tout le temps.