2010-08-14 14 views
7

Salut je cherche un moyen d'aligner les boutons dans ma vue de l'arbre de sorte qu'il ressemble à dans la même colonne, même si elle est dans n'importe quel niveau. Par exemple:Comment aligner le bouton sur wpf treeview

Item1 [Button] 
Item2 [Button] 
Item3[Button] 

je veux qu'il ressemble

Item1 [Button] 
Item2 [Button] 
Item3 [Button] 

De toute façon que je peux le faire ..?

Répondre

7

D'abord, jetez un oeil à cette entrée de blog Horizontal stretch on TreeViewItems. Le ControlTemplate par défaut pour TreeViewItem n'autorise pas l'étirement du contenu de l'en-tête, ce dont vous aurez besoin. Utilisez le TreeViewItem style que l'auteur recommande, mais changer

<Setter Property="HorizontalContentAlignment" Value="Center" /> 

à

<Setter Property="HorizontalContentAlignment" Value="Stretch" /> 

Maintenant, vous aurez un TreeViewItem où le contenu d'en-tête s'étend sur toute la largeur de la TreeViewItem. Pour obtenir le rendu TreeViewItem avec du texte plus un bouton, utilisez la propriété ItemTemplate de TreeView. Si vous voulez juste les boutons alignés à droite, vous pouvez utiliser un DockPanel:

<TreeView.ItemTemplate> 
    <HierarchicalDataTemplate ItemsSource="{Binding ...}"> 
     <DockPanel LastChildFill="False"> 
      <TextBlock DockPanel.Dock="Left" Text="{Binding ...}"/> 
      <Button DockPanel.Dock="Right" Content="{Binding ...}"/> 
     </DockPanel> 
    </HierarchicalDataTemplate> 
</TreeView.ItemTemplate> 

Si le contenu des boutons peuvent avoir une taille variable et vous voulez qu'ils aient tous la même largeur, utilisez une grille avec SharedSizeScope. Set Grid.IsSharedSizeScope="True" dans le TreeView puis dans votre ItemTemplate faire quelque chose comme ceci:

<TreeView.ItemTemplate> 
    <HierarchicalDataTemplate ItemsSource="{Binding ...}"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition/> 
       <ColumnDefinition SharedSizeGroup="Buttons"/> 
      </Grid.ColumnDefinitions> 
      <TextBlock Text="{Binding ...}"/> 
      <Button Grid.Column="1" Content="{Binding ...}"/> 
     </Grid> 
    </HierarchicalDataTemplate> 
</TreeView.ItemTemplate> 
+0

solution Nice, je ne pense pas que l'utilisation HorizontalContentAlignment pour cela ... –

+0

Merci mate..it ont bien fonctionné – biju