【问题标题】:Different ItemsPanelTemplate in a GridView GroupStyleGridView GroupStyle 中的不同 ItemsPanelTemplate
【发布时间】:2014-03-17 21:28:51
【问题描述】:

在 Windows 应用商店应用程序中,我在 GridView 中使用分组项目。我创建了不同的数据模板,但我无法创建不同的ItemsPanelTemplates,因为没有选择器。但我的目标是: 假设我想创建 2 个组。其中之一应该是VariableSizedWrapGridItemsPanelTemplate,代码如下所示:

<GroupStyle.Panel>
    <ItemsPanelTemplate>
        <VariableSizedWrapGrid Orientation="Horizontal" MaximumRowsOrColumns="4"/>
    </ItemsPanelTemplate>
</GroupStyle.Panel>

它水平滚动并将项目列表包装成四个。

另一个应该是垂直列表,带有垂直滚动选项。这里有两个问题。

  1. 我不知道如何使用另一个 ItemsPanelTemplate,因为没有选择器。

  2. 另一个问题是,当我将VariableSizedWrapGridOrientation="Vertical" 一起使用时,它没有显示垂直滚动选项,它只是切断了屏幕底部的列表。

编辑: 我在这里找到了我的 2. 问题的解决方案: Vertical scrolling inside GridView group of items in WinRT XAML 所以现在我可以使用垂直滚动的项目,但我想在一组中水平使用,在另一组中垂直使用!所以 1. 的问题仍然存在。

【问题讨论】:

  • Windows Store GridView 包含 ItemTemplateSelector 属性,我在我的项目中使用它。一组显示小项目,另一组显示大项目(加倍高度)。
  • 我使用ItemTemplateSelector 为这些项目赋予不同的外观。那不是我需要的。我需要更改项目的排列,一组应该是垂直可滚动的,另一组应该是水平环绕的。我的问题是关于ItemsPanelTemplate 和选择器,而不是ItemTemplate

标签: c# xaml windows-8 microsoft-metro windows-store-apps


【解决方案1】:

您能否将相关属性绑定到视图模型中的依赖属性或更好的属性,然后进行适当更改。

<GroupStyle.Panel>
   <ItemsPanelTemplate>
       <VariableSizedWrapGrid Orientation="{Binding MyOrientation}" 
        MaximumRowsOrColumns="{Binding MyMaxRows}"/>
   </ItemsPanelTemplate>
</GroupStyle.Panel>

【讨论】:

  • 这很有用,但是如果我将Orientation="Vertical" 绑定到一个组,它不会水平滚动。你知道为什么吗?如果我在VariableSizedWrapGrid 周围加上ScrollViewer,它就会崩溃。我分享的关于我的第二个问题的解决方案的链接与GroupStyle.ContainerStyle 一起玩,我不知道如何将该解决方案和您的解决方案放在一起。你能帮我多做一点吗?
  • 在 WrapGrid Orientation="Vertical" 中,将尝试将每个项目放在最后一个项目的下方,直到达到最大行数 =4,然后它将移动到右侧的下一列。 Horizo​​ntal 尝试将每个新项目放在最后一个项目的右侧,直到达到 maxcolumn =4,然后将下一个项目放在下面的行中并重复。 ItemsPanleTemplate 需要一个 Panel 作为一个孩子,所以如果你把一个滚动查看器放在那里会崩溃。 GridView 有自己的 Scrollviewer 供您使用,例如
  • 我的横组会被换行,没关系。但是,如果我想让该垂直组包含这么多需要垂直滚动而不是包装的项目怎么办。 WrapGrid 无论如何都要包装它。解决方案是什么?在这种情况下,我需要一个组的 ScrollViewer,而不是整个 GridView。
  • 刚刚看到这个stackoverflow.com/questions/13190572/… 可能最好使用ListView
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 2010-12-22
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 2010-10-16
  • 2016-12-02
相关资源
最近更新 更多