显示项目WPF

时间:2011-10-14 12:56:07

标签: wpf wpf-controls itemscontrol

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

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

我在考虑:

  • 创建自定义ItemsControl(如何?)并创建自定义面板。
  • 迭代集合并为每个集合动态创建一个控件放在画布上(看起来有点粗糙)

我应该采取什么行动?

1 个答案:

答案 0 :(得分:3)

我会使用绑定来显示您的卡片集合 - 一种方法是使用ItemsControl Canvas作为ItemsPanel,并将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>