簡體   English   中英

HierarchicalDataTemplate和GridSplitter

[英]HierarchicalDataTemplate and GridSplitter

TreeView的HierarchicalDataTemplate似乎無法與GridSplitter一起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"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM