我知道我可以使用 ListView 和 GridView 来创建我想要的任何大小的“Tiles”/Items,但是如何创建不同大小的 Tiles 以在我的应用程序中使用?这需要使用 ListView 或 GridView。
我已经尝试了很多东西,但我完全不知道该怎么做。任何帮助都感激不尽。
如果我没有描述我想要正确实现的目标,这里有一张图片:
我知道我可以使用 ListView 和 GridView 来创建我想要的任何大小的“Tiles”/Items,但是如何创建不同大小的 Tiles 以在我的应用程序中使用?这需要使用 ListView 或 GridView。
我已经尝试了很多东西,但我完全不知道该怎么做。任何帮助都感激不尽。
如果我没有描述我想要正确实现的目标,这里有一张图片:
一种简单的方法是创建一个继承自 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
您需要将列表的ItemsPanel
/设置为所需的值,并将列表项的 / 设置为所需的值。我相信您可以在列表控件中执行此操作,最好通过右键单击 VS XAML 设计视图或 Blend 中的控件并选择“编辑其他模板”/“编辑生成的项目容器”来提取该控件。ItemsPanelTemplate
VariableSizedWrapGrid
Grid.RowSpan
ColumnSpan
ItemContainerStyle