在stackpannel中拉伸textblock和texbox

时间:2016-06-24 12:07:26

标签: c# wpf xaml

我希望将元素水平自动拉伸到网格宽度,因此当您拉伸窗口元素时,必须按比例拉伸它。

<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>

3 个答案:

答案 0 :(得分:3)

当我回答here时,您不能使用 filename_queue = tf.train.string_input_producer(filenames, shuffle=True) reader = tf.IdentityReader() self.key, self.value = reader.read(filename_queue) self.label = tf.py_func(get_label, [self.key], [tf.int64])[0] 在堆叠方向上拉伸,因为它总是会使用尽可能小的堆叠元素(除非它们有固定的大小,然后它将利用该)。

使用StackPanelDockPanel代替内部组件并将其拉伸到最大尺寸。

答案 1 :(得分:0)

您可以使用类似于下图所示的网格替换堆叠面板;

     <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"/>

因为它的所有三个列都具有相同的宽度,并将扩展以填充它占据的控件。

你不能以这种方式使用堆栈面板,因为它实际上只是通过“堆叠”(添加)它包含的控件的宽度/高度来获得它的宽度/高度。

您可以使用堆栈面板找到解决方法,但只是使用不同的控件来完成您正在完成的工作要容易得多。

答案 2 :(得分:0)

再添加一个选项以及上述答案。您还可以使用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>