[英]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.
HorizontalAlignment = 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.