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 d'onglet. Je veux pouvoir créer un identifiant pour le modèle de contenu afin de pouvoir le référencer dans le code derrière, et pour pouvoir l'appliquer sélectivement à certains onglets dans un seul TabControl. Cependant, je suis confus au sujet de ces trois identificateurs xaml différents. Quelle est la différence et laquelle convient le mieux à mes besoins?
Le 'x:' spécifie l'espace de noms, qui serait dans votre cas très probablement " http://schemas.Microsoft.com/winfx/2006/xaml " Vous verrez l'alias déclaré en haut de votre fichier Window.Xaml. x: Key, x: Name, etc. sont toutes des directives dans cet espace de noms.
En revanche, l'attribut 'Name' (sans le x :) est une propriété de dépendance déclarée dans la classe FrameworkElement.
x: Clé
Identifie de manière unique les éléments créés et référencés dans un dictionnaire défini par XAML. L'ajout d'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 WPF ResourceDictionary.
x: Nom
Identifie de manière unique les éléments définis par XAML dans une étendue de noms XAML. Les étendues de noms 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 au graphique d'objet créé par XAML au moment de l'exécution.
x: Uid
Fournit un identifiant 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
Je n'ai vu x: Uid qu'une application doit prendre en charge différentes langues avec un dictionnaire de ressources.
Pour les deux autres (x: Key et x: Name), une règle de base consiste à utiliser x: Name pour les éléments Framework et x: Clé pour les styles, les modèles, etc. Donc, pour votre question, si vous nommez un modèle lui-même, vous utiliseriez la directive x: Key . Les contrôles déclarés dans le modèle utiliseraient la directive x: Name .
Une liste complète de toutes les directives Xaml est donnée à Xaml Namespace
Si vous souhaitez appliquer le modèle à tous les onglets de votre page, vous pouvez utiliser x: Type, mais si vous souhaitez l'appliquer à quelques onglets et non à tous les onglets que vous pouvez utiliser - x: Clé.
En général, vous utiliserez x: Key lorsque vous souhaitez l'utiliser comme StaticResource dans votre fichier xaml. Vous fournirez x: Name à un contrôle ou à un modèle lorsque vous souhaitez le référencer dans votre code-behind. Je n'ai jamais utilisé X: Uid, mais c'est ce que dit MSDN,
Utilisez x: Uid pour identifier un élément objet dans votre XAML. Cet élément d'objet est généralement une instance d'une classe de contrôle ou d'un autre élément affiché dans une interface utilisateur. La relation entre la chaîne que vous utilisez dans x: Uid et les chaînes que vous utilisez dans un fichier de ressources est que les chaînes du fichier de ressources sont le x: Uid suivi d'un point (.) Puis du nom d'une propriété spécifique de l'élément c'est localisé.