C# 子图元切换为折叠或隐藏后,栅格不会更改

C# 子图元切换为折叠或隐藏后,栅格不会更改,c#,wpf,xaml,visibility,C#,Wpf,Xaml,Visibility,我有一个有4个按钮的网格。启动应用程序时,所有4个按钮都可见。用户操作后,按钮1至3切换为折叠/隐藏。我的目标是3个按钮不再可见,第四个按钮“散布”在整个网格上(参见本文最后一张图片)。不幸的是,我的代码没有按我希望的方式工作:/ 这是我现在的代码: <Grid Grid.Column="0"> <Grid.RowDefinitions> <RowDef

我有一个有4个按钮的网格。启动应用程序时,所有4个按钮都可见。用户操作后,按钮1至3切换为折叠/隐藏。我的目标是3个按钮不再可见,第四个按钮“散布”在整个网格上(参见本文最后一张图片)。不幸的是,我的代码没有按我希望的方式工作:/

这是我现在的代码:

                <Grid Grid.Column="0">
                   <Grid.RowDefinitions>
                      <RowDefinition Height="*"/>
                      <RowDefinition Height="*"/>
                      <RowDefinition Height="*"/>
                      <RowDefinition Height="*"/>
                   </Grid.RowDefinitions>
                   <Button Name="btn_1" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 1"/>
                   <Button Name="btn_2" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 2"/>
                   <Button Name="btn_3" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 3"/>
                   <Button Name="btn_4" Grid.Row="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 4"/>
                </Grid>
我将绑定控件RowDefinitionHeight(
公共网格长度控件RowDefinitionHeight
)设置为
new GridLength(1,GridUnitType.Star)
在我的代码隐藏中,如果所有4个按钮都可见。如果只有第四个按钮可见,则ControlRowDefinitionHeight设置为新网格长度(1,GridUnitType.Auto)

您还必须将相应的
行定义的
高度从
*
更改为
自动,否则,正如我们所观察到的,网格将继续均匀分布其行。

**通过添加MinHeight=“任意内容”进行尝试***
        **Try it by adding MinHeight="anything you like"**    
            <Grid Grid.Column="0">
               <Grid.RowDefinitions>
                  <RowDefinition Height="auto"/>
                  <RowDefinition Height="auto"/>
                  <RowDefinition Height="auto"/>
                  <RowDefinition Height="auto"/>
               </Grid.RowDefinitions>
               <Button Name="btn_1" Grid.Row="0" MinHeight="20"  HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 1"/>
               <Button Name="btn_2" Grid.Row="1" MinHeight="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 2"/>
               <Button Name="btn_3" Grid.Row="2" MinHeight="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 3"/>
               <Button Name="btn_4" Grid.Row="3" MinHeight="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 4"/>
            </Grid>

谢谢,这就是解决方案。请参阅我的编辑,了解我是如何在代码中实现这一点的。
        **Try it by adding MinHeight="anything you like"**    
            <Grid Grid.Column="0">
               <Grid.RowDefinitions>
                  <RowDefinition Height="auto"/>
                  <RowDefinition Height="auto"/>
                  <RowDefinition Height="auto"/>
                  <RowDefinition Height="auto"/>
               </Grid.RowDefinitions>
               <Button Name="btn_1" Grid.Row="0" MinHeight="20"  HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 1"/>
               <Button Name="btn_2" Grid.Row="1" MinHeight="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 2"/>
               <Button Name="btn_3" Grid.Row="2" MinHeight="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 3"/>
               <Button Name="btn_4" Grid.Row="3" MinHeight="20" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="Button 4"/>
            </Grid>