2014-10-22 127 views
0

我有一個網格,2行一個名稱和按鈕,另一個輸出。wpf網格和堆疊面板填充

我想要第一行拉伸全寬和按鈕對齊到右側。

想知道我缺少什麼,因爲我認爲堆棧面板會填滿寬度。

<Window x:Class="Sample.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

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

     <StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="0" > 
      <TextBox Name="NameTextBox" MinWidth="150" HorizontalAlignment="Stretch"/> 
      <Button Margin="10,0" Name="AlertButton" Content="Say Hello" HorizontalAlignment="Stretch" /> 
     </StackPanel> 

     <TextBox Name="OutpuTextBox" MinLines="5" Grid.Row="1" Grid.Column="0"/> 
    </Grid> 
</Window> 
+0

跨越'StackPanel'將填補寬度,但他們的孩子不會。您必須嵌套另一個「網格」或者先用更多的單元格擴展第一個「網格」(也許對某些元素使用「RowSpan」/「ColumnSpan」)。 – Sinatr 2014-10-22 11:11:19

回答

0

水平StackPanel忽略其子女的水平對齊。您可以將您的佈局更改爲2列,並將在Button第一行的第二列,並設置底部TextBox跨2列

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="Auto"/> 
    </Grid.ColumnDefinitions> 
    <TextBox Name="NameTextBox" MinWidth="150" HorizontalAlignment="Stretch"/> 
    <Button Margin="10,0" Name="AlertButton" Content="Say Hello" HorizontalAlignment="Stretch" Grid.Column="1" /> 
    <TextBox Name="OutpuTextBox" MinLines="5" Grid.Row="1" Grid.ColumnSpan="2"/> 
</Grid> 
+1

感謝您的提示。正是我在找什麼。 – 2014-10-22 11:34:14