2011-10-14 103 views
0

我需要显示纸牌游戏板。我的BoardViewModelM公开了一个IEnumerable,其中CardViewModel具有应该在板上绘制卡的信息。 我想baord到:显示项目WPF

  • 使用所有可用大小来绘制卡(缩放由卡提供的位置和大小的数据,保持比例)
  • 支持缩放(包括手势缩放)

我正在考虑:

  • 创建一个自定义的ItemsControl(如何?),并创建一个自定义面板。
  • 迭代的收集和动态创建的每一个放置在画布上的控件(好像有点粗)

应该是什么我的行动路线?

回答

3

我会用结合,以显示你的采集卡 - 一个选项是使用ItemsControlCanvasItemsPanel,并设置ItemContainerStyle每个卡位。就像:

<ItemsControl ItemsSource="{Binding CardCollection}"> 
    <ItemsControl.ItemsPanel> 
    <ItemsPanelTemplate> 
     <Canvas /> 
    </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <Image Source="{Binding CardImage}" Width="{Binding CardWidth}" Height="{Binding CardHeight}" /> 
    </DataTemplate> 
    </ItemsControl.ItemTemplate> 
    <ItemsControl.ItemContainerStyle> 
    <Style> 
     <Setter Property="Canvas.Left" Value="{Binding CardX}" /> 
     <Setter Property="Canvas.Top" Value="{Binding CardY}" />      
    </Style> 
    </ItemsControl.ItemContainerStyle> 
</ItemsControl> 
+0

谢谢,我只是这样做,只适用于重新调整大小,我创建了一个从Canvas派生的自定义面板。是否可以指示画布自动调整内容大小,以便使用分配给它的空间显示所有内容? –