x: signification en xaml

Je vois beaucoup de déclarations comme

<TextBox x:Name="txtInput" />

Ou comme

<BooleanToVisibilityConverter x:Key="boolToVis" />

Pourquoi x: qui est nécessaire et ce qu'il me donne.

<DockPanel.Resources>
  <c:MyData x:Key="myDataSource"/>
</DockPanel.Resources>

Et ici, nous avons aussi la c:

Merci pour l'aide

44
demandé sur Night Walker 2011-01-01 13:26:20

3 réponses

Ce n'est rien de plus que des raccourcis vers les différents espaces de noms pour XML. Vous pouvez choisir comme vous le souhaitez. Si vous regardez les lignes supérieures de votre XAML, vous trouverez la ligne:

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Changez le' x 'en' wpf 'par exemple et vous verrez que vous devez changer tous les préfixes' x: 'dans votre code en' wpf: ' pour le faire compiler.

Le préfixe' c: ' fait référence à votre propre code. Disons que vous avez une bibliothèque de classes qui compile dans MyLib.DLL. Cette bibliothèque contient un classe nommée MyData. Pour pouvoir référencer la classe MyData, vous avez besoin de quelque chose comme:

xmlns:c="clr-namespace:MyClasses;assembly=MyLib"

Dans votre en-tête XAML.

Vous pouvez ensuite référencer la classe MyData dans votre XAML avec c:MyData. Mais vous êtes entièrement libre de changer le 'c ' en 'myfabulousclasses ' ou tout ce que vous voulez.

Le but de ceci? Pour distinguer les classes ou les membres qui ont le même nom, mais qui appartiennent à des dll différentes.

62
répondu Dabblernl 2017-10-04 08:51:05

Le x: préfixe

Dans l'exemple d'élément racine précédent, le préfixe x: a été utilisé pour mapper l'espace de noms XAML http://schemas.microsoft.com/winfx/2006/xaml , qui est l'espace de noms XAML dédié qui prend en charge les constructions de langage XAML. Ce préfixe x: est utilisé pour mapper cet espace de noms XAML dans les modèles de projets. L'espace de noms XAML pour le langage XAML contient plusieurs constructions de programmation que vous utiliserez très fréquemment dans votre XAML. Ce qui suit est une liste des constructions de programmation x: prefix les plus courantes que vous utiliserez:

X: Key: définit une clé unique pour chaque ressource dans un ResourceDictionary (ou des concepts de dictionnaire similaires dans d'autres frameworks). x: Key représentera probablement 90% des usages x: que vous verrez dans le balisage d'une application WPF typique.

X: Class: spécifie L'espace de noms CLR et le nom de la classe qui fournit le code-behind pour une page XAML. Vous devez avoir une telle classe pour prendre en charge le code-behind par le WPF modèle de programmation, et donc vous voyez presque toujours x: mapped, même s'il n'y a pas de ressources.

X:Nom: Spécifie un nom d'objet de l'instance qui existe dans le code d'exécution après un objet élément est traité. En général, vous utiliserez fréquemment une propriété équivalente définie par WPF pour x: Name. Ces propriétés correspondent spécifiquement à une propriété de sauvegarde CLR et sont donc plus pratiques pour la programmation d'applications, où vous utilisez fréquemment du code d'exécution pour trouver les éléments nommés de XAML initialisé. La propriété la plus commune est FrameworkElement.Name. vous pouvez toujours utiliser x: Name lorsque la propriété Name équivalente au niveau du framework WPF n'est pas prise en charge dans un type particulier. Cela se produit dans certains scénarios d'animation.

X: Static: active une référence qui renvoie une valeur statique qui n'est pas autrement une propriété compatible XAML.

X: Type: construit une référence de Type basée sur un nom de type. Ceci est utilisé pour spécifier les attributs qui prennent le Type, tels que Style.TargetType, bien que fréquemment la propriété ait une conversion de chaîne en Type native de telle sorte que l'utilisation de l'extension de balisage x:Type soit facultative.

Http://msdn.microsoft.com/en-us/library/ms752059.aspx http://msdn.microsoft.com/en-us/library/ms753327.aspx

15
répondu Kishore Kumar 2011-01-01 11:49:07

Il fait partie d'un espace de noms . Dans votre exemple, le {[0] } est utilisé pour indiquer que la balise MyData appartient à cet espace de noms. Vous pouvez jeter un oeil à l'article suivant sur MSDN qui explique le x: prefix en XAML.

6
répondu Darin Dimitrov 2011-01-01 10:28:01