2013-02-10 41 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中的控件并选择“编辑附加模板”/“编辑生成的物品容器”,可以获得最佳效果。

相关问题