У меня проблема с моим 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
не будет заполнять пустое пространство.
Я бы хотел расширить DataGrid
на всю область.
Задача 2:
Если я не коснусь TextBox
строки Height
и не добавлю несколько строк текста, TextBox
развернется Height
. Если строка Height
из TextBox
была ранее изменена, то никаких проблем не возникает.
Есть предложения?