为简单起见,假设我有适用于 Windows 8 的 ac# Windows Store Project,其中包含以下项目:
- GridView (PlatformsGrid)
- List«PlatformSearchResult» (所有平台)
- standardstyles.xaml 中的数据模板 (PlatformDataTemplate)
allPlatforms 是从在线 API 填充的“PlatformSearchResult”对象的集合,具有以下 3 个属性:
- ID
- 姓名
- 别名
我可以为我的 allPlatforms 集合中存在的每个对象向 gridview 添加一个新项目,但是这些项目是空白的,并且不显示来自我的对象的数据。
当前代码的快速摘要如下所示:
XAML 标记:
<!-- Platforms Content -->
<GridView x:Name="PlatformsGrid" Grid.Row="1"
CanReorderItems="True" CanDragItems="True"
ItemTemplate="{StaticResource PlatformDataTemplate}" >
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid MaximumRowsOrColumns="2"
VerticalChildrenAlignment="Top" HorizontalChildrenAlignment="Center" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
数据模板
<!-- Platform Item Template -->
<DataTemplate x:Key="PlatformDataTemplate">
<Grid Background="#FF939598" Height="250" Width="250">
<Image Source="/SampleImage.png" Stretch="UniformToFill"/>
<StackPanel Orientation="Vertical" Background="#CC000000"
Height="90" VerticalAlignment="Bottom">
<TextBlock Text="{Binding Name}"
Margin="10,3,0,0" Width="242" Height="62"
TextTrimming="WordEllipsis" TextWrapping="Wrap" HorizontalAlignment="Left"/>
<TextBlock Text="{Binding Alias}"
Margin="10,2,0,0" Width="186" Height="14"
TextTrimming="WordEllipsis" HorizontalAlignment="Left" FontSize="9" Opacity="0.49"/>
</StackPanel>
</Grid>
</DataTemplate>
控制功能
private async void FetchItemInfo_Loaded(object sender, RoutedEventArgs e)
{
// Get List of Top Games
List<PlatformSearchResult> allPlatforms = new List<PlatformSearchResult>();
allPlatforms = await GamesDB.GetPlatforms();
// Dynamically Create Platform Tiles
foreach (PlatformSearchResult platform in allPlatforms)
{
PlatformsGrid.DataContext = platform;
PlatformsGrid.Items.Add(platform);
}
}
如何获取添加的项目以显示适当的对象属性(暂时忽略图像),我只是对填充 TextBlocks 的内容感兴趣。
我感谢任何人可以提供的任何帮助!
谢谢,亚历克斯。