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