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>
solution Nice, je ne pense pas que l'utilisation HorizontalContentAlignment pour cela ... –
Merci mate..it ont bien fonctionné – biju