我正在开发一个Windows 8应用程序。我想在另一个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
<DataTemplate x:Key="MyFeedGridView">
<Grid HorizontalAlignment="Left" Width="500">
<StackPanel x:Name="gridViewStackPanel" Orientation="Horizontal" >
<GridView
HorizontalAlignment="Right"
x:Name="myFeedGridViewInListView"
ItemTemplate="{StaticResource MyFeedGridViewInListView}"
ItemsSource="{Binding listContent}"
Height="100"
Visibility="{Binding listContent,Converter={StaticResource FeedListToVisibilityConverter}}"
SelectionMode="None"
Width="400" />
</StackPanel>
</Grid>
</DataTemplate>
我使用一个转换器可以隐藏或显示内GridView
“MyFeedGridView”。以下是我使用
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;
}
我的问题的转换器是内部的GridView获取隐藏所有项目或获取的所有项目,不论我已绑定了listContent的可见。
我注意到,只有当我设置ItemsPanel
时才会发生这种情况。如果我删除VariableSizedWrapGrid
属性,那么它按预期工作。但是我需要在每一列之后包装这些项目,所以我不能废除它。
请让我知道,如果你有任何线索为什么发生这种情况。
由于
编辑: 附加的网格视图项目应如何排列图像。如果您看到网格视图的第一个项目,那么它在表示歌曲的网格视图项目内有另一个网格视图。所以这个内部网格视图对于一些项目将是空的,并为一些项目填充。所以我写了一个可视化转换器来显示和隐藏内部网格视图。当使用转换器时,如果第一个网格视图项目具有内部网格视图项目(歌曲,那么它将显示所有项目的内部网格视图,并且如果第一个网格视图项目没有任何内部网格视图项目(歌曲),那么它隐藏所有的主要网格视图项目内部网格视图。
让我知道,如果它不明确。
您能详细阐述一下您试图实现什么以及您的视图模型是如何构建的?也许你可以画出你的'GridViewItems'的方框和你想要它们包装的方向和顺序? –
@FilipSkakun我已添加图片。如果不清楚,请告诉我。 – user3458865