2010-08-14 23 views
7

Hi suche ich nach einer Weise, die Knöpfe in meinem treeview auszurichten, damit es wie in der gleichen Spalte aussieht, selbst wenn es in irgendeinem Niveau ist. ZB:Wie man Knopf auf wpf Baumansicht justiert

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

ich will es wie

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

irgendeine Weise sehen, dass ich das tun kann ..?

Antwort

7

Schauen Sie sich zunächst diesen Blog-Eintrag Horizontal stretch on TreeViewItems an. Die standardmäßige ControlTemplate für TreeViewItem lässt nicht zu, dass sich der Headerinhalt ausdehnt, was Sie dazu benötigen. Verwenden Sie die TreeViewItem Stil, dass der Autor empfiehlt, aber

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

zu

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

Jetzt ändern haben Sie einen TreeViewItem, wo der Inhalt des Headers über die gesamte Breite des TreeViewItem erstreckt. Verwenden Sie die ItemTemplate-Eigenschaft der TreeView, um das TreeViewItem zu erhalten, um mit Text plus einer Schaltfläche zu rendern. Wenn Sie nur die Tasten rechtsbündig wollen, könnten Sie eine DockPanel verwenden:

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

Wenn der Inhalt der Tasten variable Größe haben können, und Sie wollen, dass sie alle die gleiche Breite haben, ein Gitter mit SharedSizeScope verwenden. Set Grid.IsSharedSizeScope="True" im TreeView und dann in Ihrem ItemTemplate etwas tun, wie folgt aus:

<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

Nizza Lösung, ich nicht mit Horizontalcontentalignment für das dachte ... –

+0

Dank mate..it gut funktioniert – biju

Verwandte Themen