2016-03-21 5 views
2

Я хочу, чтобы GridSplitter сделал TreeView больше, чтобы было легче видеть содержимое TreeView. Не похоже, чтобы найти подходящее место, чтобы поставить сплиттерGridsplitter не изменяет размер

<Grid.ColumnDefinitions> 
    <ColumnDefinition/> 
    <ColumnDefinition Width="auto"/> 
    <ColumnDefinition Width="auto"/> 
</Grid.ColumnDefinitions> 

<Grid.RowDefinitions> 
    <RowDefinition Height="auto"/> 
    <RowDefinition/> 
    <RowDefinition Height="auto"/> 
    <RowDefinition /> 
    <RowDefinition Height="auto"/> 
    <RowDefinition Height="auto"/> 
</Grid.RowDefinitions> 

<TextBlock Grid.Column="0" Grid.Row="0" Text="JSON String" Margin="5"/> 
<TextBox Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3"/> 

<GridSplitter Grid.Column="0" Grid.ColumnSpan="3" Grid.Row="2" Height="5"   ResizeDirection="Rows" ResizeBehavior="PreviousAndNext" HorizontalAlignment="Stretch"/> 

<TextBlock Grid.Column="0" Grid.Row="3" Text="C# Type" Margin="5"/> 
<TreeView Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="3" x:Name="outputTree" Margin="5"/> 

ответ

1

Просто поместите ваш TreeView в ViewBox:

<Grid.RowDefinitions> 
    <RowDefinition Height="auto"/> 
    <RowDefinition/> 
    <RowDefinition Height="auto"/> 
    <RowDefinition MinHeight="1"/> 
    <RowDefinition Height="auto"/> 
    <RowDefinition Height="auto"/> 
</Grid.RowDefinitions> 

<ViewBox Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="3"> 
    <TreeView x:Name="outputTree" Margin="5"/> 
</ViewBox> 

As MSDN says:

ViewBox определяет содержание декоратор, который может растягиваться и масштаба a одного ребенка, чтобы заполнить доступное пространство.

This WPF tutorial is also helpful.

работа Например:

<Window x:Class="TreeViewWpfApplication.MainWindow" 
     ...The code omitted for the brevity... 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid>  
      <Grid.RowDefinitions> 
       <RowDefinition/> 
      <RowDefinition Height="5" /> 
      <RowDefinition/> 
      </Grid.RowDefinitions> 
     <Viewbox> 
      <TreeView Name="treeView"> 
       <TreeViewItem Header="1"> 
        <TreeViewItem Header="1.2"> 
         <TreeViewItem Header="1.3"/> 
        </TreeViewItem> 
       </TreeViewItem> 
       <TreeViewItem Header="2"/> 
       <TreeViewItem Header="2"/> 
       <TreeViewItem Header="2"/> 
       <TreeViewItem Header="2"/> 
       <TreeViewItem Header="2"/> 
       <TreeViewItem Header="2"/> 
      </TreeView> 
     </Viewbox> 
     <GridSplitter Grid.Row="1" Height="5" HorizontalAlignment="Stretch" /> 
     <Button Grid.Row="2" Content="Hello" Name="btn"/> 
    </Grid> 
</Window> 

Update:

Я слегка отредактированный код. Пожалуйста, см:

<Grid> 
    <Grid.RowDefinitions>    
     <RowDefinition Height="auto"/> 
     <RowDefinition/> 
     <RowDefinition Height="auto"/> 
     <RowDefinition /> 
     <RowDefinition Height="auto"/> 
     <RowDefinition Height="auto"/> 
    </Grid.RowDefinitions> 

    <TextBlock Grid.Column="0" Grid.Row="0" Text="JSON String" Margin="5"/> 
    <TextBox Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3"/> 

    <GridSplitter Grid.Column="0" Grid.ColumnSpan="3" Grid.Row="2" 
     Height="5" ResizeDirection="Rows" ResizeBehavior="PreviousAndNext" 
     HorizontalAlignment="Stretch"/> 
    <Grid Grid.Row="3"> 
     <Grid.RowDefinitions> 
      <RowDefinition/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <TextBlock Text="C# Type" Margin="5"/> 
     <Viewbox Grid.Row="1" > 
      <TreeView x:Name="outputTree" Margin="5"> 
       <TreeViewItem Header="1"> 
        <TreeViewItem Header="1.2"> 
         <TreeViewItem Header="1.3"/> 
        </TreeViewItem> 
       </TreeViewItem> 
       <TreeViewItem Header="2"/> 
       <TreeViewItem Header="2"/> 
       <TreeViewItem Header="2"/> 
       <TreeViewItem Header="2"/> 
       <TreeViewItem Header="2"/> 
       <TreeViewItem Header="2"/> 
      </TreeView> 
     </Viewbox> 
    </Grid> 

    <TextBlock Text="5" Grid.Row="4"/> 
    <TextBlock Text="Hello6" Grid.Row="5"/> 
</Grid> 
+0

Хорошо я пробовал, но по время, когда я расширяю дерево, становится настолько маленьким, что вы не видите его. jsomers89

+0

Хорошо, я попробовал поставить MinHeight, и он по-прежнему не имеет размера ri ght это. TreeView становится невероятно малым для чтения, когда он расширяется, он начинается с размера ok, но как только он становится длиннее, он больше не читается – jsomers89

+0

просто посмотрел ваше обновление и обнаружил проблему с моим первоначальным вопросом, я не включил то, что было в последние 2 строки, которые вы удалили

1

Установите его в той же строке, что и второй TextBlock и установите ResizeBehavior в PreviousAndNext я переделаны некоторые из ваших определений строк так корректировать по мере необходимости

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition Width="auto"/> 
     <ColumnDefinition Width="auto"/> 
    </Grid.ColumnDefinitions> 

    <Grid.RowDefinitions> 
     <RowDefinition Height="auto"/> 
     <RowDefinition /> 
     <RowDefinition Height="auto"/> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 

    <TextBlock Grid.Column="0" Grid.Row="0" Text="JSON String" Margin="5"/> 
    <TextBox Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" Margin="5"/> 


    <GridSplitter Grid.Column="0" Grid.ColumnSpan="3" Grid.Row="2" Height="5"   ResizeDirection="Rows" ResizeBehavior="PreviousAndNext" VerticalAlignment="Top" HorizontalAlignment="Stretch"/> 
    <TextBlock Grid.Column="0" Grid.Row="2" Text="C# Type" Margin="5"/> 
    <TreeView Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="3" x:Name="outputTree" Margin="5"/> 
</Grid> 
Смежные вопросы