2011-10-14 157 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派生的自定義面板。是否可以指示畫布自動調整內容大小,以便使用分配給它的空間顯示所有內容? –