HierarchicalDataTemplate 和 GridSplitter

HierarchicalDataTemplate and GridSplitter

TreeView 的 HierarchicalDataTemplate 似乎不能很好地与 GridSplitter 一起使用。我不确定实际问题出在哪里,但我怀疑 ScrollViewer.

当前行为: TreeView 仅根据其项目调整其 with。当一个更宽的项目展开时,TreeView 会增长。它不能通过网格分离器缩小或放大。 Horizo​​ntalAlignment=Stretch 和 ScrollViewer 属性似乎对此没有影响。

预期行为: TreeView 调整宽度以适应 GridSplitter,并在太小时显示水平滚动条。

如屏幕截图所示,TreeView 保持其项目的最小宽度并且未与 GridSplitter 对齐。

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" MinWidth="250" />
    <ColumnDefinition Width="Auto" />
    <ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>

<TreeView Name="treMain" BorderThickness="0" ItemsSource="{Binding TreeViewSections}" ScrollViewer.HorizontalScrollBarVisibility="Visible">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type local:TreeViewEntry}" ItemsSource="{Binding Items}">
            <StackPanel Orientation="Horizontal" Margin="5,3">
                <Image Margin="0,0,5,0">
                    <Image.Style>
                        <Style TargetType="Image">
                            <Setter Property="Source" Value="{Binding Icon}" />
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=TreeViewItem}, Path=IsExpanded}" Value="True">
                                    <Setter Property="Source" Value="{qc:Binding '$P.ExpandedIcon == null || $P.Items.Count == 0 ? $P.Icon : $P.ExpandedIcon', P={Binding}}" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Image.Style>
                </Image>
                <TextBlock Text="{Binding Text}" />
            </StackPanel>
        </HierarchicalDataTemplate>
    </TreeView.Resources>
    <TreeView.ItemContainerStyle>
        <Style TargetType="{x:Type TreeViewItem}">
            <Setter Property="IsExpanded" Value="{Binding IsExpanded}" />
            <EventSetter Event="MouseDoubleClick" Handler="treMain_MouseDoubleClick" />
        </Style>
    </TreeView.ItemContainerStyle>
</TreeView>

问题是 GridSplitter 的 ResizeBehavior。 ResizeBehavior="PreviousAndNext"

可以实现预期的行为
<GridSplitter Grid.Column="1" ResizeBehavior="PreviousAndNext" Width="4"/>