2009-12-18 5 views
3

Est-il possible d'ouvrir un autre Window dans un TabControlTabItem?Nouvelle fenêtre dans un TabItem?

La raison pour laquelle je veux faire est que si j'ai 5 TabItem s dans mon TabControl, le seul fichier fenêtre je codage tous ces TabItem s et leurs actions associées auront très grand. Donc ce serait bien s'il était possible de donner à chaque TabItem son propre fichier Window.

Ou comment résolvez-vous le problème où le fichier Window contrôlant le TabControl devient trop grand?

Répondre

4

Vous avez plusieurs choix:

  • ajouter un ou plusieurs resource dictionaries à votre application contenant des ressources avec des modèles et des styles pour les différentes vues que vous hébergez dans vos onglets. Cette approche fonctionne bien si vous avez juste besoin de maintenir la séparation des arbres visuels seulement.
  • créez user controls pour chaque vue (avec son propre fichier XAML et classe) et utilisez une instance pour chaque vue différente dans les onglets. Cette approche vous permet d'encapsuler une logique métier spécifique et l'arborescence visuelle correspondante ensemble.
  • générer une partie de l'interface utilisateur à partir du code. Celui-ci n'a aucun avantage, sauf que cela vous rend XAML plus petit. Et vos fichiers .cs deviennent trop gros, vous pouvez toujours les diviser en plusieurs fichiers de code et utiliser des classes partielles. (Juste dû jeter celui-ci pour :-) complet)
2

Effectuez un UserControl pour chaque TabItem.

7
<Window ... 
    xmlns:local="clr-namespace:MyNamespace" 
    > 
    <TabControl> 
      <TabItem Header="FirstTab"> 
       <local:MyFirstTabUserControl/> 
      </TabItem> 
      <TabItem Header="SecondTab"> 
       <local:MySecondTabUserControl/> 
      </TabItem> 
      <TabItem Header="ThirdTab"> 
       <local:MyThirdTabUserControl/> 
      </TabItem> 
    </TabControl> 
</Window> 

Votre chaque TabUserControl est en fait UserControl simple, puisque TabItem peut accueillir tout contrôle comme son propre enfant.

0

Vous pouvez utiliser un UserControl comme cela a déjà été mentionné.

Mais vous pouvez également utiliser le contrôle Page. Chaque "fenêtre" serait une page, et l'onglet aurait un contrôle de navigation dedans. J'ai déjà utilisé cette approche et ça marche bien. Je préfère la route UserControl, mais les deux sont valides.

1

Vous pouvez également définir le contenu TabItem équivaut au contenu de votre fenêtre

ex: [WindowType est votre fenêtre]

WindowsType oWindow = new WindowType(); 
TabItem oTab = new TabItem(); 
oTab.Content = oWindow.Content; 
Questions connexes