2014-10-11 86 views
0

我有一個stackpanel,我動態添加50x50的矩形。我希望它在每行中顯示6,並且在接近閾值時自動添加一行。 (即12個矩形== 2行)。我似乎無法讓它正確包裝。這裏是我的XAML代碼(我已經切斷了東西,在其他行,我懷疑他們是不相關的):WPF - Stackpanel不會換行

<Grid> 
<Grid.ColumnDefinitions> 
     <ColumnDefinition Width="60"/> 
     <ColumnDefinition Width="140"/> 
     <ColumnDefinition Width="2*"/> 
     <ColumnDefinition Width="auto"/> 
</Grid.ColumnDefinitions> 
<Grid.RowDefinitions> 
     <RowDefinition Height="80"/> 
     <RowDefinition Height="80"/> 
     <RowDefinition Height="230"/> 
     <RowDefinition Height="auto"/> 
</Grid.RowDefinitions> 
     <TextBlock FontWeight="Bold" FontSize="14" Grid.ColumnSpan="3">Swatch Thumbnails</TextBlock> 
     <StackPanel x:Name="sp_Thumbnails" Width="300" Grid.Row="0" Grid.ColumnSpan="3" Orientation="Horizontal" Margin="0,15,0,0"> 
     </StackPanel> 
     <StackPanel Grid.Row="1" Grid.ColumnSpan="3" Orientation="Horizontal" Margin="0,0,0,10"> 
      <TextBlock Height="50" Width="50" Margin="0,0,4,0" > 
      <TextBlock.Background> 
      <SolidColorBrush Color="{DynamicResource {x:Static SystemColors.ActiveCaptionColorKey}}"/> 
      </TextBlock.Background></TextBlock> 
      <TextBlock Height="50" Width="50" Margin="0,0,4,0" > 
       <TextBlock.Background> 
       <SolidColorBrush Color="{DynamicResource {x:Static SystemColors.ActiveCaptionColorKey}}"/> 
       </TextBlock.Background></TextBlock> 
       <TextBlock Height="50" Width="50" Margin="0,0,4,0" > 
       <TextBlock.Background> 
       <SolidColorBrush Color="{DynamicResource {x:Static SystemColors.ActiveCaptionColorKey}}"/> 
       </TextBlock.Background></TextBlock> 
       <TextBlock Height="50" Width="50" Margin="0,0,4,0" > 
       <TextBlock.Background> 
       <SolidColorBrush Color="{DynamicResource {x:Static SystemColors.ActiveCaptionColorKey}}"/> 
        </TextBlock.Background></TextBlock> 
      <TextBlock Height="50" Width="50" Margin="0,0,4,0" > 
       <TextBlock.Background> 
       <SolidColorBrush Color="{DynamicResource {x:Static SystemColors.ActiveCaptionColorKey}}"/> 
       </TextBlock.Background></TextBlock> 
      <TextBlock Height="50" Width="50" Margin="0,0,4,0" > 
      <TextBlock.Background> 
      <SolidColorBrush Color="{DynamicResource {x:Static SystemColors.ActiveCaptionColorKey}}"/> 
     </TextBlock.Background></TextBlock> 
     </StackPanel> 
+0

爲什麼不簡單地使用'UniformGrid'並將它的'Columns'屬性設置爲6? – Clemens 2014-10-11 07:34:12

+0

不確定那是幹什麼的? – Yecats 2014-10-11 07:36:14

+0

有在線文檔。閱讀。 – Clemens 2014-10-11 07:40:04

回答

1

使用UniformGrid並設置其Columns屬性爲6:

<UniformGrid Columns="6"> 
    ...    
</UniformGrid> 
1

可以使用WrapPanel而不是StackPanel的

+0

我試過了,它似乎也沒有工作。 – Yecats 2014-10-11 16:32:19