2014-04-13 81 views
0

我想基本上顯示一個按鈕矩陣,按鈕的數量在運行時改變。 我的問題是,我希望他們彼此相鄰,以填補我給他們的所有空間。我認爲WrapPanel是完美的方式,但它將按鈕置於彼此之下,我不知道如何解決它。WPF/MVVM包裝面板方向

<Grid> 
    <WrapPanel Width="250" Height="50" Orientation="Horizontal" Margin="543,442,73,162" > 
     <ItemsControl ItemsSource="{Binding States}" > 
      <ItemsControl.ItemTemplate> 
       <DataTemplate > 
        <Button Width="50" Height="25" Content="{Binding StateName}" Padding="0" ></Button>     
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 
    </WrapPanel>...</Grid> 

States是包含名稱和ID號的項目列表。如果我想添加或刪除按鈕,我修改列表。所以按鈕出現但是按照垂直順序排列,它們超出了WrapPanel的限制,所以如果它不夠大,只有一些出現。它們只使用250和50以上的寬度。在這種情況下,如果我放5個按鈕,只顯示其中2個。

回答

2

保鮮膜別ItemsControlWrapPanel。而是將其設置爲ItemsControl的ItemsPanel

<ItemsControl ItemsSource="{Binding States}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
     <Button Width="50" Height="25" Content="{Binding StateName}" 
       Padding="0"/> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
     <WrapPanel/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 
+1

而'UniformGrid'可能是'WrapPanel'的替代方案。 – Clemens

+0

非常感謝你 – FaNaT

+0

@Zoltan - 不客氣.. !! :) –