Сетка с тремя строками, одна из которых является сворачиваемой (DataGrid, GridSplitter, TextBox). Сетка не меняет размеры, как хотелось бы - PullRequest
0 голосов
/ 06 мая 2018

У меня проблема с моим Grid макетом. Я хотел бы иметь три строки (второй с GridSplitter) с поведением:

Если строка с TextBox равна Collapsed, тогда DataGrid заполняет все пространство.
Если строка с TextBox равна Visible, тогда TextBox и DataGrid разделяют пространство.
Если Text установлено в TextBox, TextBox не расширяется Height.
TextBox и DataGrid заполняют их строки.

Пример xaml:

<DockPanel>
    <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
        <CheckBox x:Name="ShowTextBox" Content="Show TextBox"/>
        <Button Content="Add text" Click="ButtonBase_OnClick"/>
    </StackPanel>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="5"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <StackPanel Grid.Row="0" Background="Aqua">
            <DataGrid/>
        </StackPanel>

        <GridSplitter Grid.Row="1"
                      Height="5"
                      HorizontalAlignment="Stretch"
                      ResizeDirection="Rows"
                      Visibility="{Binding Path=IsChecked, ElementName=ShowTextBox, Converter={StaticResource BooleanToVisibilityConverter}}"/>

        <DockPanel Grid.Row="2"
                   Visibility="{Binding Path=IsChecked, ElementName=ShowTextBox, Converter={StaticResource BooleanToVisibilityConverter}}">
            <TextBox AcceptsReturn="True" x:Name="TextBox"
                     VerticalScrollBarVisibility="Visible"/>
        </DockPanel>
    </Grid>
</DockPanel>

Проблема 1: Когда я изменяю Height из TextBox строки и устанавливаю ее Collapsed, тогда DataGrid не будет заполнять пустое пространство. (1) start (2) problem
Я бы хотел расширить DataGrid на всю область.

Задача 2:
Если я не коснусь TextBox строки Height и не добавлю несколько строк текста, TextBox развернется Height. Если строка Height из TextBox была ранее изменена, то никаких проблем не возникает. (1) start (2) problem (3) target

Есть предложения?

...