3

我知道我可以使用 ListView 和 GridView 来创建我想要的任何大小的“Tiles”/Items,但是如何创建不同大小的 Tiles 以在我的应用程序中使用?这需要使用 ListView 或 GridView。

我已经尝试了很多东西,但我完全不知道该怎么做。任何帮助都感激不尽。

如果我没有描述我想要正确实现的目标,这里有一张图片:

在此处输入图像描述

4

2 回答 2

2

一种简单的方法是创建一个继承自 GridView 的新类并覆盖 PrepareContainerForItemOverride 方法。您可以在其中根据模型数据将 Column Span 和 RowSpan 设置为 Child 项。考虑您的模型类包含 Spanning 信息。

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

于 2013-02-11T08:23:21.583 回答
1

您需要将列表的ItemsPanel/设置为所需的值,并将列表项的 / 设置为所需的值。我相信您可以在列表控件中执行此操作,最好通过右键单击 VS XAML 设计视图或 Blend 中的控件并选择“编辑其他模板”/“编辑生成的项目容器”来提取该控件。ItemsPanelTemplateVariableSizedWrapGridGrid.RowSpanColumnSpanItemContainerStyle

于 2013-02-10T19:15:26.307 回答