2008-10-28 3 views
3

J'utilise un contrôle utilisateur WPF (contrôle onglet) pour ajouter des éléments de l'onglet dynamiquement dans le code simplifié ci-dessous:Comment étendre automatiquement le contrôle de tabulation lorsque des éléments y sont ajoutés sans créer de barre de défilement?

.... 
foreach (string id in ids) 
{ 
    TabControl.Items.Add(CreateTabItem(id)); 
} 

private TabItem CreateTabItem(string name) 
{ 
    StackPanel txtBlock = new TextBlock(); 
    txtblock.Text = name; 
    txtBlock.HorizontalAlignment = Horizontalalignment.Center; 
    panel.Children.Add(txtBlock); 

    TabItem item = new TabItem(); 
    item.Header = panel; 

    <SomeControl> control = new <SomeControl>(); 
    item.Content = control; 
    return item; 
} 

Dans le fichier XAML I spécifié comme suit pour empiler tous mes éléments de l'onglet à la colonne de gauche:

MinWidth="100" MinHeight="300" TabStripPlacement="Left" 

Comment puis-je faire mon contrôle onglet déployables automatiquement (ie. étirement) sa hauteur pour afficher tous les éléments de l'onglet que je les ajoute en? Pour l'instant, je dois étendre manuellement la hauteur de la fenêtre d'affichage pour voir tous les éléments de l'onglet. Vos idées/conseils sont grandement appréciés. PS: si vous savez comment faire apparaître la barre de défilement verticale (sans ajouter de barre de défilement à mon contrôle) dès que les éléments de l'onglet dépassent la hauteur de la fenêtre, je peux me contenter de cela s'il n'y a pas de réponses pour mon original intention.

+0

Voulez-vous dire que vous voulez agrandir la bande d'onglets? Par exemple, si vous déplacez la bande d'onglets vers la gauche, voulez-vous que la bande devienne plus large (commencer une deuxième colonne) après qu'elle atteigne le fond? –

+0

Non, je veux juste faire défiler la partie gauche de la colonne de mon contrôle où j'ai empilé les icônes de tabulation verticalement. La partie restante de mon contrôle devrait rester dans la vue quand je fais défiler la colonne de gauche. Je pense toujours à un moyen de le faire. –

Répondre

1

<ScrollViewer> 
    <TabControl 
     TabStripPlacement="Left" 
     x:Name="Tab" 
    > 
    </TabControl> 
</ScrollViewer> 

vous obtient la barre de défilement qui sera activée en cas de besoin.

+0

Merci Donnelle. Il s'est avéré que le scrollviewer n'est pas ce que je veux parce qu'il a fait défiler tout le contenu de mon contrôle hors de vue et pas seulement la colonne de gauche où j'ai empilé les icônes de tabulation. Je pense toujours à un moyen de faire défiler uniquement la colonne de gauche (c'est-à-dire la colonne de la grille) sur mon contrôle. –

+0

Alors cherchez-vous à avoir des fonctionnalités de défilement comme les onglets de Firefox, sauf que vous voulez que la barre de défilement passe à la rangée d'onglets suivante, plutôt que de faire défiler horizontalement un onglet à la fois? – Dave

Questions connexes