TabItem dans un fichier XAML distinct
Est-il possible de mettre un TabItem dans un autre XAML et de référence à quelque chose comme ceci:
<TabControl>
<local:MyTabItem/>
</TabControl>
In Separate XAML:
<UserControl x:Class="MyProject.MyTabItem"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<TabItem Header="MyTab">
</TabItem>
</UserControl>
Bien sûr, cela ne fonctionne pas, mais je me demande comment puis-je faire cela?
source d'informationauteur John Sheares
Vous devez vous connecter pour publier un commentaire.
Si ce que vous voulez faire est simplement de rendre le code plus facile à gérer alors je vous recommande la définition de chaque onglet données dans un contrôle utilisateur, mais qui ont encore le TabItem dans l'onglet principal de contrôle.
Supposons que votre code d'origine:
Pour rendre le code plus facile à gérer, vous risquez de casser l'onglet contenu dans un UserControl tels que:
Puis utilisez-le contrôle de l'utilisateur dans votre TabControl comme ceci:
Si vous voulez vraiment inclure la TabItem dans votre contrôle de l'utilisateur alors vous pouvez le faire en créant d'abord un contrôle de l'utilisateur, et puis changer le type de l'utilisateur de contrôler le type TabItem (assurez-vous de changer dans le code xaml nœud racine et le code-behind).
Ce serait vous laisser avec un contrôle onglet qui ressemble à ceci:
Et chaque TabItem1 'de Contrôle de l'Utilisateur" serait de type TabItem. Voici un exemple:
Et comme je l'ai mentionné, assurez-vous de modifier le code derrière, de sorte qu'il s'étend TabItem au lieu de contrôle de l'utilisateur:
La réponse précédente de Tony Borres déjà couvre les aspects les plus importants. Mais le commentaire demande d'accès de code derrière. Je vais donc étendre l'exemple de Tony pour montrer cet aspect, trop. Cette réponse montre les espaces de noms requis. J'ai ajouté à la réponse de Tony, trop.
Pour simplement rendre le code plus facile à gérer, il est recommandé de définir chaque onglet données dans un contrôle utilisateur, mais qui ont encore le TabItem dans l'onglet principal de contrôle. Cette stratégie est utile par exemple pour contourner FxCop CA1505: "Éviter désuète code" lors de l'utilisation d'un contrôle onglet avec plusieurs onglet articles.
Supposons que c'est le code d'origine:
Pour rendre le code plus facile à gérer l'onglet contenu peut être déplacé dans un UserControl tels que:
Et il est alors possible d'utiliser le nouveau contrôle utilisateur dans le TabControl comme ceci:
Maintenant il possible d'accéder à l'intérieur-wigdets de l'utilisateur de contrôler à partir de la fenêtre principale et vice-versa. Veuillez noter que le "x:" en face de l'utilisateur nom du contrôle.
Le code d'accès txtData2 serait le même, même si est embarqué dans son propre contrôle de l'utilisateur.
Sur la surface, cela sonne comme il serait mieux résolus par un style et/ou d'un modèle pour la TabItem de contrôle que vous pouvez enregistrer dans un fichier de ressources distinct. Combien vous avez besoin pour personnaliser le réel TabItem permettra de déterminer si vous pouvez simplement utiliser un style ou si vous avez besoin d'un modèle.
Ce que vous pouvez faire est de définir un Style nommé pour chaque TabItem dans un autre fichier de ressources comme, créer un MyResources.xaml qui ressemble à quelque chose comme ceci:
Ensuite dans votre Application principale.fichier xaml de la fusion dans le dictionnaire de ressources:
Enfin dans votre application, vous permettrait de tirer parti de ces Styles simplement en faisant:
Je pense que ce que vous voulez est d'obtenir TabItem Contenu déclarer séparément. Depuis TabItem est un ContentControl vous pouvez présenter un UserControl que son contenu.
En Séparer XAML:
Dans un autre XAML, vous pouvez avoir un contenu 2