Quelle est la différence entre x:Key, x:Name et x:UID dans un exemple de données dans WPF?

j'essaie de créer des onglets dynamiques dans WPF, et j'essaie d'écrire un modèle de contenu qui ne s'appliquera qu'à certains éléments de l'onglet. Je veux pouvoir créer un identifiant pour le modèle de contenu afin que je puisse le référencer dans le code derrière, et que je puisse l'appliquer sélectivement à seulement quelques onglets dans un TabControl unique. Cependant, je suis confus au sujet de ces trois différents identificateurs xaml. Quelle est la différence, et qui est le mieux pour mes fins?

24
demandé sur user3685285 2014-05-29 18:23:55

2 réponses

Le "x:" spécifie l'espace de noms, ce qui serait, dans votre cas, le plus susceptible d'être "http://schemas.microsoft.com/winfx/2006/xaml" Vous verrez l'alias déclarée en haut de votre Fenêtre.Fichier Xaml. x:Key, x: Name, etc sont toutes les directives de cet espace de noms.

par contre, l'attribut 'Name' (Sans le x:) est une propriété de dépendance déclarée dans la classe Cadorkelement.

x:Key

identifie de façon unique les éléments qui sont créés et référencés dans un dictionnaire défini par XAML. Ajouter une valeur X: Key à un élément d'objet XAML est le moyen le plus courant d'identifier une ressource dans un dictionnaire de ressources, par exemple dans un dictionnaire de ressources WPF.

x:Name

identifie de façon unique les éléments définis par XAML dans un namescope XAML. Les namescopes XAML et leurs modèles d'unicité peuvent être appliqués aux objets instanciés, lorsque les frameworks fournissent des API ou implémentent des comportements qui accèdent aux Graphique d'objet créé par XAML au moment de l'exécution.

x: Uid

Fournit un identificateur unique pour les éléments de balisage. Dans de nombreux scénarios, cet identifiant unique est utilisé par les processus et outils de localisation XAML.

Notes

j'ai seulement vu x: Uid quand une application doit supporter différentes langues avec un dictionnaire de ressources.

Pour les deux autres (x:x:Name), une règle de base est d'utiliser x:Name pour les éléments du Cadre et x:Key pour les styles, les gabarits, etc. Donc pour votre question, si vous nommez un modèle lui-même, vous utiliserez le x:Key la directive. Les contrôles déclarés dans le modèle utilisez le x:Name la directive.

une liste complète de toutes les directives Xaml est donnée à Espace De Noms Xaml

35
répondu Gayot Fow 2014-05-29 15:03:48

Si vous souhaitez appliquer le modèle à tous les onglets de votre page, vous pouvez utiliser x: Type, mais si vous voulez l'appliquer à quelques onglets et de ne pas tous les onglets que vous pouvez utiliser x: Key.

Généralement, vous utiliserez x: Key lorsque vous voulez l'utiliser comme StaticResource dans votre fichier xaml. Vous fournira x: Name à un contrôle ou un modèle quand vous voulez le renvoyer dans votre code-behind. Je n'ai jamais utilisé X: Uid, mais C'est ce que MSDN dit,

utilisez x: Uid pour identifier un élément d'objet dans votre XAML. Généralement, ce élément objet est une instance d'une classe de contrôle ou d'un autre élément c'est affiché dans une interface utilisateur. La relation entre la corde vous utilisez dans x: Uid et les chaînes que vous utilisez dans un fichier de ressources est que le les chaînes de fichiers de ressources sont le x:Uid suivi d'un point (.), puis par le nom d'une propriété spécifique de l'élément en cours localis.

4
répondu rajibdotnet 2014-05-29 14:52:56