显示项目WPF

发布于 2024-12-09 14:08:52 字数 315 浏览 0 评论 0原文

我需要展示纸牌游戏板。我的 BoardViewModelM 公开了一个 IEnumerable,其中 CardViewModel 具有应在板上绘制卡片的位置的信息。 我希望 baord 能够:

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

我正在考虑:

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

我应该采取什么行动?

I need to display a cards game board. My BoardViewModelM exposes an IEnumerable where the CardViewModel has the information where the card should be drawn on the board.
I would like the baord to:

  • Use all available size to draw the cards (scaling the location and size data provided by the cards, keeping proportions)
  • Support zooming (including gestures zooming)

I was considering:

  • create a custom ItemsControl (how?) and create a custom panel.
  • Iterate on the collection and dynamically create a control for each one to place on a canvas (seems a bit crude)

What should be my course of action?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

久伴你 2024-12-16 14:08:52

我将使用绑定来显示您的卡片集合 - 一种选择是使用带有 CanvasItemsControl 作为 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>

I would use binding to display your card collection - one option is to use an ItemsControl with a Canvas as the ItemsPanel, and set the ItemContainerStyle to position each card. Something like:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文