显示项目WPF

显示项目WPF,wpf,wpf-controls,itemscontrol,Wpf,Wpf Controls,Itemscontrol,我需要展示一个纸牌游戏板。My BoardViewModelM公开了一个IEnumerable,其中CardViewModel包含卡应在板上绘制的位置的信息。 我希望鲍尔德: 使用所有可用尺寸绘制卡(缩放卡提供的位置和尺寸数据,保持比例) 支持缩放(包括手势缩放) 我在考虑: 创建自定义项控件(如何?)并创建自定义面板 对集合进行迭代,并为每个集合动态创建一个控件以放置在画布上(看起来有点粗糙) 我应该采取什么行动?我会使用绑定来显示您的卡片收藏-一个选项是使用带有画布的ItemsCon

我需要展示一个纸牌游戏板。My BoardViewModelM公开了一个IEnumerable,其中CardViewModel包含卡应在板上绘制的位置的信息。 我希望鲍尔德:

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

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

我应该采取什么行动?

我会使用绑定来显示您的卡片收藏-一个选项是使用带有
画布的
ItemsControl
作为
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>

我会使用绑定来显示您的卡片收藏-一个选项是使用带有
画布的
ItemsControl
作为
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>


谢谢,我就是这么做的,只是为了重新调整大小,我从画布上创建了一个自定义面板。是否可以指示画布自动调整内容大小,以便使用分配给它的空间显示所有内容?谢谢,我这样做了,只是为了应用重新调整大小,我创建了一个来自画布的自定义面板。是否可以指示画布自动调整内容大小,以便使用为其分配的空间显示其所有内容?