我需要删除Grid.Row占用的空间.我能够折叠(删除)我放在Grid.Row中的控件,但由于RowDefinition具有固定的大小(高度),即使在删除子控件后我仍然会看到一个空行.
有没有办法折叠RowDefinition/Grid.Row?
谢谢你的关注.
将带有触发器的样式应用于您RowDefinition想要折叠的行是绝对可以的。当您有身高的星级值时,这会有所帮助。
ObservableCollection例如,如果您想在结果存在之前隐藏结果部分(即零计数),则以下内容可能很有用。
<RowDefinition>
    <RowDefinition.Style>
        <Style>
            <Setter Property="RowDefinition.Height" Value="2*"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding Results.Count}" Value="0">
                    <Setter Property="RowDefinition.Height" Value="0"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </RowDefinition.Style>
</RowDefinition>
设置RowDefinition.Height ="Auto"并不适合所有情况,因为我们经常需要*调整行的大小.
不是动态地/编程地从列表中添加和删除行,而是在下一行上拉伸第一行内容更容易且更安全.
这可以通过使用DataTrigger在网格上的第一个项目上设置Grid.RowSpan来完成.下面是一个完整的示例 - 只需将其粘贴到新的WPF窗口中即可查看它的实际效果.
  <Grid>
        <Grid.Resources>
            <BooleanToVisibilityConverter x:Key="visConverter"></BooleanToVisibilityConverter>
        </Grid.Resources>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid Grid.Row="0" Background="Orange">
            <Grid.Style>
                <Style TargetType="Grid">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=toggle1, Path=IsChecked}" Value="False">
                            <Setter Property="Grid.RowSpan" Value="3"></Setter>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Grid.Style>
        </Grid>
        <GridSplitter Grid.Row="1" ResizeBehavior="PreviousAndNext" HorizontalAlignment="Stretch" Height="3" 
                      Visibility="{Binding ElementName=toggle1, Path=IsChecked, Converter={StaticResource visConverter}}"></GridSplitter>
        <Grid Name="bottomGrid" Grid.Row="2" Background="LightBlue" 
              Visibility="{Binding ElementName=toggle1, Path=IsChecked, Converter={StaticResource visConverter}}">
        </Grid>
        <ToggleButton Name="toggle1" VerticalAlignment="Top">Hide/Show</ToggleButton>
</Grid>