Xaml 如何在栅格视图中显示栅格视图?

Xaml 如何在栅格视图中显示栅格视图?,xaml,windows-8,windows-runtime,winrt-xaml,Xaml,Windows 8,Windows Runtime,Winrt Xaml,我正在开发一个Windows8应用程序。我想在另一个GridView项目模板中显示一个GridView。我已经向内部GridView添加了一个可见性绑定,但是在外部GridView中包装GridViewItems时绑定不起作用。当我使用简单的ListView或GridView而不使用任何包装时,它就可以工作了 这是主GridView,带有包装 <GridView Name="feedGridView" Background="Transparent" Selec

我正在开发一个Windows8应用程序。我想在另一个
GridView
项目模板中显示一个
GridView
。我已经向内部
GridView
添加了一个可见性绑定,但是在外部
GridView
中包装
GridViewItems
时绑定不起作用。当我使用简单的
ListView
GridView
而不使用任何包装时,它就可以工作了

这是主
GridView
,带有包装

<GridView 
    Name="feedGridView"
    Background="Transparent" 
    SelectionMode="None"
    ItemTemplate="{StaticResource MyFeedGridView}">
    <GridView.ItemsPanel>
        <ItemsPanelTemplate>
            <VariableSizedWrapGrid Height="600" Orientation="Vertical" />
        </ItemsPanelTemplate>
    </GridView.ItemsPanel>
</GridView>
我正在使用转换器隐藏或显示内部
GridView
。下面是我正在使用的转换器

public object Convert(object value, Type targetType, object parameter, string language)
{
    List<ContentList> contents = value as List<ContentList>;

    return (contents != null && contents.Count > 0) ? Visibility.Visible :    Visibility.Collapsed;
}
公共对象转换(对象值、类型targetType、对象参数、字符串语言) { 列表内容=作为列表的值; 返回(contents!=null&&contents.Count>0)?可见性。可见:可见性。折叠; } 我的问题是,内部GridView对于所有项都是隐藏的,或者对于所有项都是可见的,而与我绑定的listcontent无关

我注意到只有当我设置
ItemsPanel
时才会发生这种情况。如果我删除了
VariableSizedWrapGrid
属性,那么它将按预期工作。但是我需要在每一列后面包装这些项目,这样我就不能把它删掉

请让我知道,如果你有任何线索,为什么会发生这种情况

谢谢

编辑: 附加网格视图项应如何排列的图像。如果看到网格视图的第一个项,则在表示歌曲的网格视图项中有另一个网格视图。因此,对于某些项目,此内部网格视图将为空,而对于某些项目,此视图将填充。因此,我编写了一个可见性转换器来显示和隐藏内部网格视图。当我使用转换器时,如果第一个网格视图项有内部网格视图项(歌曲),那么它将显示所有项目的内部网格视图,如果第一个网格视图项没有任何内部网格视图项(歌曲),那么它将隐藏所有主网格视图项的内部网格视图


如果不清楚,请告诉我。

GridView的问题是,默认情况下,它的所有
GridViewItems
都使用相同的大小。您可以使用
VariableSizedWrapGrid
作为其
ItemsPanel
,但这将禁用虚拟化,因此您将无法将
GridView
与lar一起使用在不产生性能成本的情况下,ge提供的产品数量(几十个以上)

对于您的场景,您可以将
GridView
与非统一的
ItemsSource
一起使用,其中一些项表示主列表项,而另一些项表示歌曲列表,并使用
ItemTemplateSelector
指定要为哪种类型的项使用哪种模板。这当然不理想,但这是您的easiest选项是。一个问题是,这些歌曲列表中的一些可能最终孤立在与其关联的项目不同的列中,因此对于难看的解决方法,您可能需要计算每列的项目数,并且在列表中还包括空项目,或者重新排列项目,以便在列的空端填充项目没有任何与之关联的歌曲列表的项目


更好的选择可能是使用
VariableSizedWrapGrid
作为
项目资源
,或者简单地使用手动填充的
网格
,并在最后添加一个
更多的…
项目以打开
列表视图
,因为垂直列表比水平
网格视图更容易滚动。您仍然需要了解我们使用非统一的
ItemsSource
ItemTemplateSelector
来获得所需的布局并保持列表的虚拟化,但这正是您所得到的。

您能否详细说明您试图实现的目标以及视图模型是如何构建的?或许您可以绘制
GridViewItems
和di的框你想让它们包装成什么样?菲利普斯卡昆我添加了一张图片。如果不清楚,请告诉我。
public object Convert(object value, Type targetType, object parameter, string language)
{
    List<ContentList> contents = value as List<ContentList>;

    return (contents != null && contents.Count > 0) ? Visibility.Visible :    Visibility.Collapsed;
}