C#Windows应用商店网格应用(xaml)模板

时间:2013-03-13 10:25:39

标签: c# windows-8 rss sample-data

我正在使用我编辑的Windows应用商店网格应用(xaml)模板创建C#Windows 8商店应用。我的第一页是GroupedItemsPage模板,是Drinks页面。在这里,我编辑了SimpleDataSource.cs文件中的SimpleDataSource方法,以添加我自己的图像和标题(Booze,Soda,...)。这些是标准物品,所以我在那里做了。

Hub Page

当点击Booze时,用户会进入Booze页面,这也是一个GroupedItemsPage模板。这8个项目(啤酒,葡萄酒,鸡尾酒......)也是标准配置,所以我在SimpleDataSource.cs文件中创建了第二个方法来显示正确的标题和图像。这里出错了。当点击“Booze”时,我得到一个“System.ArgumentException”。我创建了另一个公共密封类SampleDataSourceSecond,就像模板中的那个一样。我还编辑了该页面的LoadState方法。

    protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
    {
        // TODO: Assign a collection of bindable groups to this.DefaultViewModel["Groups"]
        var sampleDataGroupsSecond = SampleDataSourceSecond.GetGroupsSecond((String)navigationParameter);
        this.DefaultViewModel["GroupsSecond"] = sampleDataGroupsSecond;
    }

当我在Visual Studio中查看xaml页面时,它显示正确但在运行时出现错误。

Drinks Page

当点击“Beer”时,它会转到另一个页面GroupDetailPage模板。项目“Jupiler”,“Stella”应该来自RSS提要,我获得标题,描述,图像。这是第二个问题:因为这些不是标准的,所以我不能在SampleDataSource.cs文件中更改它。我应该在哪里做这个?

Beer Page

所以: 我这样做对吗? 2.如何解决此Systemt.ArgumentException? 3.我应该在哪里放置代码,以便我可以从RSS源填充GroupDetailPage。

提前致谢!

编辑:第二页的项目可以更改。当点击Booze时,它应该显示在第二页:啤酒,葡萄酒,鸡尾酒,威士忌,......点击苏打水:可口可乐,Icetea,Spriten ......

1 个答案:

答案 0 :(得分:1)

一般情况下,开箱即用的模板非常适合作为 模式 ,但很少作为您的实现。

  1. 我假设您在以下方法的第一行代码中获得了异常?

    public static IEnumerable<SampleDataGroupSecond> GetGroups(string uniqueId)
    {
        if (!uniqueId.Equals("AllGroups")) throw new ArgumentException("Only 'AllGroups' is supported as a collection of groups");
    
        return _sampleDataSource.AllGroups;
    }
    

    您正在尝试将 示例 数据源转换为不太适合您的数据模型需求的数据源。此数据源的实现明确指出它未设置为以您尝试使用它的方式使用。如果我理解正确,你实际上有群组?

  2. 同样,基础数据源是 示例 并且 示例 包括三个主要字段数据模型:ImageTitleSubtitle。通过XAML数据绑定, 示例 数据模板(Standard250x250ItemTemplate中的StandardStyles.xaml)正在处理一个非常具体和狭窄的案例。

  3. 我首先要说明您的数据模型实际应该是什么样的 - 忘记样本模板中的内容。 Microsoft's App Builder指南的第7天包含working with data and files的一个很好的部分,其中包括可能对您有所帮助的数据绑定。

    当你掌握了这一点时,你会发现你的问题“我在哪里放置代码是没有意义的”。除了获取数据并将其分配给DataContext所需的代码之外,很少有任何代码。

    对于RSS,Blog Reader tutorial应该也有帮助,因为它专门访问和显示来自RSS提要的项目。