2013-02-19 53 views
2

这是我第一次使用XAML赢得8商店应用程序,所以对于几件事情不太确定。我想要将数据绑定到一个gridview。要做到这一点,我有一个将组数据绑定到Gridview窗口8商店应用程序

class Category 
{ 
    public int Id { get; set; } 
    public string CategoryName { get; set; } 
    public string IconPath { get; set; } 
} 
代码

的背后,我有

protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState) 
    { 
     // TODO: Assign a bindable collection of items to this.DefaultViewModel["Items"] 
     Model.Utility util = new Utility(); 
     var categories = util.GetCategoryList(); // this returns List<Category> 
     this.DefaultViewModel["Items"] = categories; 
    } 

,我的XAML是:

<!-- Horizontal scrolling grid used in most view states --> 
    <GridView 
     x:Name="itemGridView" 
     AutomationProperties.AutomationId="ItemsGridView" 
     AutomationProperties.Name="Items" 
     TabIndex="1" 
     Grid.RowSpan="2" 
     Padding="116,136,116,46" 
     ItemsSource="{Binding Source={StaticResource itemsViewSource}}" 
     ItemTemplate="{StaticResource Standard250x250ItemTemplate}" 
     SelectionMode="None" 
     IsSwipeEnabled="false"/> 

但我没有看到任何数据,当我运行应用程序。我在哪里做错了?

回答

4

Standard250x250ItemTemplate默认绑定到属性Title,SubTitle和Image。除非您更新了模板,否则您的Category类没有这些ItemTemplate的属性,没有任何可显示的内容。我怀疑有数据绑定错误VS当您调试应用程序说标题,子标题和图像属性无法找到。

要解决此问题,请右键单击GridView,选择Edit Additonal Templates,Edit Generated Items(ItemTemplate),Edit a Copy并更新模板以将正确的元素绑定到类上的属性名称。

+0

这真棒。欢呼m8。 :) 有用。 – kandroid 2013-02-19 20:34:25

1

根据代码中的一些名称,看起来您正在尝试为Grid App模板重用一些模板代码。

我也要去假定您在同一XAML文件中定义以下资源:

<CollectionViewSource x:Name="itemsViewSource" Source="{Binding Items}" /> 

如果是这样,你应该看到矩形您每个类别,但没有数据。那是因为您引用了Standard250x250ItemTemplate数据模板(位于StandardStyles.xaml中),并且它正在数据源中寻找具有TitleSubtitle等名称的特定字段。但对于类别,您有CategoryNameId

试试这个,看看你的数据是否出现。这没有任何样式,但你可以复制Standard250x250ItemTemplate的样式,并根据需要进行调整。你可以通过IDE - Blend或Visual Studio来做到这一点 - 你不必剪切和粘贴XAML。

<GridView 
    x:Name="itemGridView" 
    AutomationProperties.AutomationId="ItemsGridView" 
    AutomationProperties.Name="Items" 
    TabIndex="1" 
    Grid.RowSpan="2" 
    Padding="116,136,116,46" 
    ItemsSource="{Binding Source={StaticResource itemsViewSource}}" 

    SelectionMode="None" 
    IsSwipeEnabled="false"> 

    <GridView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding CategoryName}" /> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView>