网格有三行,一个是可折叠的(DataGrid,GridSplitter,TextBox)。网格没有像我希望的那样调整大小

时间:2018-05-05 22:25:39

标签: c# wpf stackpanel wpfgrid

我的Grid布局出了问题。我想有三行(第二行GridSplitter)行为:

如果TextBox的行为Collapsed,则DataGrid填充整个空格。
如果TextBoxVisible,则TextBoxDataGrid共享空格。
如果在Text中设置了TextBox,则TextBox不会展开Height
TextBoxDataGrid填充了他们的行。

示例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:
如果我未触及TextBoxHeight并添加多行文字,则TextBox将展开Height。如果先前更改了HeightTextBox,则不会出现任何问题。 (1) start (2) problem (3) target

有什么建议吗?

0 个答案:

没有答案