2015-12-24 47 views
0

我需要在整个宽度水平方向的堆叠面板上扩展第二个元素(textblock必须在左边,textBox应该会获得所有剩余的空间)。我读了很多关于这个话题的文章,但仍然找不到答案。属性Horizo​​ntalAlignment当然,Horizo​​ntalContentAlignment不适用。据我所知,我必须使用比StackPanel更多的东西,因为它取决于内容大小。我尝试使用Grid Row-Columns和其他变体,但仍无法获得我需要的内容。请帮我:)的代码和截图样品如何在水平定向堆叠面板中拉伸第二个元素?

<Grid> 
     <StackPanel> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch"> 
       <TextBlock Text="Login"></TextBlock> 
       <TextBox PlaceholderText="login" HorizontalAlignment="Stretch"/> 
      </StackPanel> 
      ... 
      more StackPanels 
      ... 
     </StackPanel> 
    </Grid> 

enter image description here

回答

2

使用格列定义似乎最简单的方法对我来说。 此示例代码应该有所帮助:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="0.2*"></ColumnDefinition> 
     <ColumnDefinition Width="*"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 

    <TextBlock Grid.Column="0" Text="Login" Background="Red" /> 
    <TextBox Grid.Column="1" Background="Blue"/> 
</Grid> 

它将(使用可用空间的20%),显示一个文本块向左红色背景和文本框具有蓝色背景的权利(上拉伸剩余空间)。

您可以通过更改第一列定义的宽度来调整文本块的宽度。

希望它有帮助。

+0

是的,它的工作原理。只是有点不寻常:)谢谢! –

+0

对于您的示例,您还可以通过添加两个'RowDefinitions'来避免出现两个单独的网格。 –