2015-12-24 45 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'來避免出現兩個單獨的網格。 –