2014-04-13 36 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 - 不客气.. !! :) –