简体   繁体   English

HierarchicalDataTemplate和GridSplitter

[英]HierarchicalDataTemplate and GridSplitter

TreeView's HierarchicalDataTemplate doesn't seem to work well with GridSplitter . TreeView的HierarchicalDataTemplate似乎无法与GridSplitter一起GridSplitter I'm not exactly sure where actual issue lies, but I'm suspecting ScrollViewer . 我不确定实际问题在哪里,但是我怀疑ScrollViewer

Current behaviour: The TreeView adapts its with according to its items only. 当前行为: TreeView仅根据其项目调整其with。 When an item that is wider expands, the TreeView grows. 当更宽的项目扩展时,TreeView会增长。 It cannot be downsized or upscaled by the grid splitter. 网格拆分器不能缩小或放大它。 HorizontalAlignment=Stretch and ScrollViewer properties don't seem to affect this. Horizo​​ntalAlignment = Stretch和ScrollViewer属性似乎对此没有影响。

Expected behavior: The TreeView adapts the width to the GridSplitter and displays a horizontal scroll bar when too small. 预期的行为: TreeView调整宽度以适合GridSplitter并在太小时显示水平滚动条。

As seem on the screenshot, the TreeView stays at its item's minimum width and doesn't align to the 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>

the issue is ResizeBehavior of GridSplitter. 问题是GridSplitter的ResizeBehavior。 Expected behavior can be achieved with ResizeBehavior="PreviousAndNext" 可以通过ResizeBehavior="PreviousAndNext"实现预期的行为

<GridSplitter Grid.Column="1" ResizeBehavior="PreviousAndNext" Width="4"/>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM