2015-02-27 1 views
2

J'ai actuellement un TabControl chargé dans MainWindow.xaml, qui a trois onglets. Nommez-les Tab1, Tab2 et Tab3.Meilleur moyen de remplacer UserControl chargé dans TabControl TabItem

Les différents onglets ont des vues (commandes userc) fournies et elles fonctionnent toutes comme prévu. Code comme suit. J'utilise MahApps Metro TabControl ici.

<Controls:MetroAnimatedSingleRowTabControl Grid.Row="0" Grid.ColumnSpan="4" x:Name="MainTabControl"> 
      <TabItem Header="Tab1"> 
       <view:Tab1View DataContext="{Binding}" /> 
      </TabItem> 
      <TabItem Header="Tab2"> 
       <view:Tab2View DataContext="{Binding}" /> 
      </TabItem> 
      <TabItem Header="Tab3">      
       <view:Tab3View DataContext="{Binding}" /> 
      </TabItem>     
     </Controls:MetroAnimatedSingleRowTabControl> 

Ce que je voudrais faire maintenant est de changer la vue de Tab3 (qui est Tab3View.xaml) à une autre vue (appelons-le subTab3View.xaml) lorsque je clique sur un bouton sur Tab3View.xaml. Cela changera fondamentalement le contenu Tab3 de Tab3View.xaml en subTab3View.xaml.

Quelqu'un pourrait-il me suggérer un moyen d'y parvenir?

Répondre

1

Vous pouvez avoir un contrôle de contenu dans votre onglet, puis modifier le contenu sur un clic de bouton ou tout autre événement que vous voulez.

<TabItem Header="Tab3">      
    <ContentControl x:Name="contentControl"/> 
</TabItem>     


private void ButtonClick(object sender, RoutedEventArgs e) 
{ 
    this.contentControl.Content = new Tab3View(); 
} 
+0

Merci beaucoup. J'essayais de trouver des moyens pour y parvenir malgré les déclencheurs de xaml, mais votre méthode semble être la plus courte et la plus facile à lire. Merci encore –

+1

Vous pouvez aussi changer le contenu avec des déclencheurs, mais si vous êtes heureux de coder dans le code, c'est le meilleur moyen d'y aller. Codage heureux :) – Muds

+0

Serait-il possible d'atteindre les mêmes résultats au moyen de déclencheurs seulement dans xaml? Cette page à onglet particulière est destinée à un lancement rapide vers d'autres sous-outils sur lesquels je travaille donc je ne prévoyais pas de créer un modèle de vue pour cela au début. –