2013-02-10 43 views
3

我知道我可以使用ListView和GridView創建任何大小的「瓷磚」/項目,但我如何創建不同大小的瓷磚以供在我的應用程序中使用?這將需要使用ListView或GridView。Windows應用程序中的不同大小的瓷磚

我已經嘗試了很多東西,但我完全不知道如何做到這一點。任何幫助都感激不盡。

如果我沒有描述什麼,我想正確實現,這裏是一個事先知情同意:

enter image description here

回答

2

一個簡單的方法是創建一個從GridView繼承的新類並重寫PrepareContainerForItemOverride方法。您可以在其中根據模型數據將Column Span和RowSpan設置爲Child項目。考慮你的模型類包含生成信息。

public class VariableGrid : GridView 
{ 
    protected override void PrepareContainerForItemOverride(DependencyObject element, object item) 
    { 
     ITileItem tile = item as ITileItem; 
     if (tile != null) 
     { 
      GridViewItem griditem = element as GridViewItem; 
      if (griditem != null) 
      { 
       VariableSizedWrapGrid.SetColumnSpan(griditem, tile.ColumnSpan); 
       VariableSizedWrapGrid.SetRowSpan(griditem, tile.RowSpan); 
      } 
     } 
     base.PrepareContainerForItemOverride(element, item); 
    } 
} 

的更多信息:http://wpfplayground.blogspot.in/2013/03/different-sized-tile-items-in-winrt.html

1

您需要在列表中ItemsPanel/ItemsPanelTemplate設置爲VariableSizedWrapGrid並設置Grid.RowSpan/ColumnSpan您的列表項目到您想要的值。我相信你可以在列表控件的ItemContainerStyle中做到這一點,通過右鍵單擊VS XAML設計視圖中或Blend中的控件並選擇「編輯附加模板」/「編輯生成的物品容器」,可以獲得最佳效果。

相關問題