2012 年 9 月 17 日更新:重申了问题并添加了娱乐步骤
我正在尝试将 WrapGrid 样式的图像库添加到 ItemDetailPage。到目前为止,我发现实现此目的的唯一解决方案是创建组样式并使用 DataTemplate 选择器。在详细信息页面上执行此操作似乎有点矫枉过正,因为我需要为页面上的每一列创建一个类。
我试图解决这个问题,如下所示,但 GridView 独立于我的 ScrollViewer 滚动,这是不可接受的。
要从 VS 中的默认 Grid 应用程序开始重新创建:
将此属性添加到 SampleDataItem
// Add to SampleDataItem TODO: replace int with image url strings
private List<int> _subItems = null;
public List<int> SubItems
{
get
{
if (_subItems == null)
{
_subItems = new List<int>();
for (int i = 0; i < 50; i++)
this._subItems.Add(i);
}
return this._subItems;
}
set { this.SetProperty(ref this._subItems, value); }
}
在 ItemDetailPage.xaml 中替换 ScrollViewer 中的 RichTextColumns:
<!--Fixed column layout, replaces RichTextColumns from template-->
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="800"/>
<ColumnDefinition Width="1400"/>
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Text="{Binding Title}"/>
<Image x:Name="image" MaxHeight="480" Margin="0,20,0,10" Stretch="Uniform" Source="{Binding Image}"/>
</StackPanel>
<GridView ScrollViewer.HorizontalScrollMode="Disabled" VerticalAlignment="Top" ItemsSource="{Binding SubItems}" Grid.Column="1" ItemTemplate="{StaticResource GridViewDataTemplate1}" >
</GridView>
</Grid>
最后添加以下DataTemplate
<DataTemplate x:Key="GridViewDataTemplate1">
<Grid Background="Yellow" Width="200" Height="200"/>
</DataTemplate>