C# 在stackpannel中拉伸文本块和文本框
我想自动将元素水平拉伸到网格宽度,所以拉伸窗口时,元素必须按比例拉伸C# 在stackpannel中拉伸文本块和文本框,c#,wpf,xaml,C#,Wpf,Xaml,我想自动将元素水平拉伸到网格宽度,所以拉伸窗口时,元素必须按比例拉伸 <Grid Margin="0,0,0,40" Name="TaskGrid" Visibility="Hidden"> <StackPanel Name="AmountOfSP" Visibility="Collapsed" Orientation="Horizontal" HorizontalAlignment="Stretch"> <CheckBox Name="r
<Grid Margin="0,0,0,40" Name="TaskGrid" Visibility="Hidden">
<StackPanel Name="AmountOfSP" Visibility="Collapsed" Orientation="Horizontal" HorizontalAlignment="Stretch">
<CheckBox Name="restrRadioButton" Checked="restrCheckBox_Checked" Unchecked="restrCheckBox_Unchecked"/>
<TextBlock TextWrapping="Wrap" Text="bla-bla" />
<TextBox Name="AmountOfO" HorizontalAlignment="Stretch" MinWidth="70" Height="20" Margin="10,0,0,0"/>
</StackPanel>
</Grid>
正如我所回答的,您不能使用堆叠面板
在堆叠方向拉伸,因为它将始终为堆叠元素使用尽可能小的尺寸(除非它们具有固定尺寸,否则它将利用该尺寸)
使用
DockPanel
或网格
代替,并订购适当的内部组件以拉伸至最大尺寸。您可以使用类似于下图所示的网格替换stackpanel
<Grid Name="AmountOfSP" Visibility="Collapsed">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<CheckBox Name="restrRadioButton" Grid.Column="0" Checked="restrCheckBox_Checked" Unchecked="restrCheckBox_Unchecked"/>
<TextBlock Grid.Column="1" TextWrapping="Wrap" Text="bla-bla" />
<TextBox Grid.Column="2" Name="AmountOfO" HorizontalAlignment="Stretch" MinWidth="70" Height="20" Margin="10,0,0,0"/>
<Grid>
您可以通过更改columnDefinition宽度(例如
<ColumnDefinition Width="Auto"/>
当它站立时,所有三列都将具有相同的宽度,并将展开以填充它所占用的控件
您不能以这种方式使用as stack面板,因为它实际上只是通过“堆叠”(添加)它包含的控件的宽度/高度来获取其宽度/高度
使用堆栈面板可以找到解决方法,但使用不同的控件来完成所需的工作要容易得多。在上述答案的基础上再添加一个选项。您还可以使用
UniformGrid
实现您想要的功能
<Grid Margin="0,0,0,40" Name="TaskGrid">
<UniformGrid Name="AmountOfSP" Columns="3" HorizontalAlignment="Stretch">
<CheckBox x:Name="restrRadioButton"/>
<TextBlock TextWrapping="Wrap" Text="bla-bla" />
<TextBox Name="AmountOfO" HorizontalAlignment="Stretch" MinWidth="70" Height="20" Margin="10,0,0,0"/>
</UniformGrid>
</Grid>
UniformGrid工作正常,还有一些问题,我通过使折叠字段可见来使用堆叠字段,如何将窗口宽度绑定到可见字段。