Po pierwsze, spójrz na ten wpis na blogu Horizontal stretch on TreeViewItems. Domyślna funkcja ControlTemplate dla TreeViewItem nie pozwala na rozciągnięcie zawartości nagłówka, co będzie potrzebne. Użyj stylu TreeViewItem że autor zaleca, ale zmienić
<Setter Property="HorizontalContentAlignment" Value="Center" />
do
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
Teraz masz TreeViewItem, gdy zawartość nagłówka rozciąga się na całej szerokości TreeViewItem. Aby uzyskać TreeViewItem do renderowania z tekstem plus przycisk, użyj właściwości ItemTemplate TreeView. Jeśli chcesz po prostu przyciski wyrównany do prawej, można użyć 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>
Jeśli zawartość przycisków mogą mieć zmienny rozmiar i chcesz je wszystkie mieć taką samą szerokość, użyj siatki z SharedSizeScope. Ustaw Grid.IsSharedSizeScope="True"
w TreeView i następnie w ItemTemplate zrobić coś takiego:
<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>
Nicea rozwiązanie, nie myśleć o użyciu HorizontalContentAlignment za to ... –
Dzięki mate..it pracowali dobrze – biju