为了简单起见,我只想说我有一个针对Windows 8的c#Windows应用商店项目,其中包含以下内容:
allPlatforms是从在线API填充的“PlatformSearchResult”对象的集合,具有以下3个属性:
我可以为我的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的内容。
我感谢任何人都可以提供帮助!
谢谢,Alex。
答案 0 :(得分:2)
通过属性将allplatforms列表绑定到gridview作为itemssource。当然,这假设gridview或页面的datacontext是包含allplatforms属性的类。如果没有,你也必须这样做。
通过
后面的代码设置datacontextthis.grid.DataContext = class()//
或通过绑定
<!-- Platforms Content -->
<GridView x:Name="PlatformsGrid" Grid.Row="1"
CanReorderItems="True" CanDragItems="True"
ItemsSource = "{Binding AllPlatforms}"
ItemTemplate="{StaticResource PlatformDataTemplate}" >
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid MaximumRowsOrColumns="2"
VerticalChildrenAlignment="Top" HorizontalChildrenAlignment="Center" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
您可以查看msdn。
上提供的Windows 8应用示例编辑:您的平台对象必须具有已添加为Binding的名称和别名属性。
答案 1 :(得分:0)
你需要做的就是控制功能
private async void FetchItemInfo_Loaded(object sender, RoutedEventArgs e)
{
// Get List of Top Games
List<PlatformSearchResult> allPlatforms = new List<PlatformSearchResult>();
allPlatforms = await GamesDB.GetPlatforms();
PlatformsGrid.ItemsSource = allPlatforms;
}