C# 当使用右水平对齐最小化StackPanel时,将显示结束
我在C# 当使用右水平对齐最小化StackPanel时,将显示结束,c#,wpf,alignment,stackpanel,minimize,C#,Wpf,Alignment,Stackpanel,Minimize,我在Wpf中有一个窗口,它显示了一个包含3个StackPanel的网格 <Grid> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <Co
Wpf
中有一个窗口,它显示了一个包含3个StackPanel的网格
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Text1"/>
<Button Width="100" Margin="15,0" Content="Button1"/>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
<TextBlock Text="Text2"/>
<Button Width="100" Margin="15,0" Content="Button2"/>
</StackPanel>
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right">
<TextBlock Text="Text3"/>
<Button Width="100" Margin="15,0" Content="Button3"/>
</StackPanel>
</Grid>
当我最小化窗口时,中间的StackPanel应该部分消失(因为它所在的ColumnDefinition定义为Width=“*”
)
但是,由于水平对齐是正确的,当我最小化窗口时,StackPanel的开始消失,它显示了结束(看图片)
当我最小化端点时,我希望它消失(就像HorizontalAlignment=left中的行为),但我不想更改HorizontalAlignment
有人知道怎么做吗
编辑-1:
顺便说一下,我遇到了一个奇怪的解决办法!
当我把中间的StackPanel转到DockPanel时,它工作了!如果有人能解释为什么会这样,我会很高兴的
此外,我对不改变布局的解决方案很感兴趣。这是因为您采用了硬编码的按钮大小100,因此每当从最大化位置恢复窗口时,网格第二列的可用大小也会小于按钮大小,因此会被剪裁 设置网格或父窗口的最小宽度以解决此问题