2015-12-02 51 views
1

我想要適應一個有4個單元格的wpf網格,並且屏幕上的所有時間都是全尺寸的,這樣細胞的內容就等於分開了,但是我遇到了問題......這是代碼:創建一個完整尺寸的WPF網格

<StackPanel x:Name="MainStackPanel" HorizontalAlignment="Center" Orientation="Vertical"> 
    <StackPanel.Resources> 
     <Style TargetType="Rectangle"> 
      <Setter Property="HorizontalAlignment" Value="Stretch"/> 
      <Setter Property="Height" Value="Auto"/> 
     </Style> 
    </StackPanel.Resources> 
    <Grid x:Name="Control1" HorizontalAlignment="Center" Height="150"> 
     <Grid.Resources> 
      <Style TargetType="Rectangle"> 
       <Setter Property="HorizontalAlignment" Value="Stretch"/> 
       <Setter Property="Height" Value="Auto"/> 
      </Style> 
     </Grid.Resources> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
      <ColumnDefinition/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 

     <Rectangle Fill="Red" Grid.Row="0" Grid.Column="1"/> 
     <Rectangle Fill="Blue" Grid.Row="0" Grid.Column="2"/> 
     <Rectangle Fill="Green" Grid.Row="1" Grid.Column="2"/> 
     <Rectangle Fill="Yellow" Grid.Row="1" Grid.Column="1"/> 
    </Grid> 
</StackPanel> 

請讓我知道我應該怎麼得到這個工作?還是什麼我做錯了......

+0

是否有必要將網格包裝在StackPanel中? – Domysee

+0

我明白你的意思了(下面評論)。基於stackpanel的setter,它並不是真的有必要。獨立網格應該以相同格式出現,除非堆疊面板還包含未列出的其他元素。 – Danielle

回答

0

如果你想有一個網格有四個等距單元,那麼你可以做這樣的事情。

<Grid.ColumnDefinitions> 
     <ColumnDefinition Width="1*"/> 
     <ColumnDefinition Width="1*"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="1*"/> 
     <RowDefinition Height="1*"/> 
    </Grid.RowDefinitions> 

這將創建一個2x2網格,如果屏幕大小調整將自動調整大小。在你的例子中,你的網格在一個堆棧面板內,所以它只能填充堆棧面板的大小。如果你想要一個整個屏幕的網格,你需要把你的網格作爲第一個容器,並設置它的約束,如上所示。

2

您使用的是「自動」集束性。在這種情況下,如果您希望它被平分並佔據整個空間,則需要對行和列定義使用'*'。檢查塞繆爾給出的答案this related question.

+2

這不會解決問題,如果網格是在一個Stackpanel內,如在OP中的情況 – Domysee