2016-12-04 3 views
0

HierarchicalDataTemplate TreeView не работает с GridSplitter. Я не совсем уверен, где актуальная проблема, но я подозреваю ScrollViewer.HierarchicalDataTemplate и GridSplitter

Текущее поведение: TreeView адаптирует его согласно требованиям только для своих изделий. Когда расширяемый элемент расширяется, TreeView растет. Он не может быть сокращен или масштабирован с помощью разделителя сетки. HorizontalAlignment = свойства Stretch и ScrollViewer, похоже, не влияют на это.

Ожидаемое поведение: TreeView адаптирует ширину к GridSplitter и отображает горизонтальную полосу прокрутки, когда она слишком мала.

Как показано на скриншоте, TreeView остается на минимальной ширине своего элемента и не выравнивается с GridSplitter.

screenshot

<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> 

ответ

1

вопрос является ResizeBehavior из GridSplitter. Ожидаемое поведение может быть достигнуто с помощью ResizeBehavior="PreviousAndNext"

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

Интересно! Работает сразу. Я не знал об этом свойстве, потому что «GridSplitter» всегда работал для меня без каких-либо проблем. – bytecode77