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工作正常,还有一些问题,我通过使折叠字段可见来使用堆叠字段,如何将窗口宽度绑定到可见字段。