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

C#Windows应用商店网格应用程序(xaml)模板,c#,windows-8,rss,sample-data,C#,Windows 8,Rss,Sample Data,我正在使用我编辑的Windows应用商店网格应用程序(xaml)模板创建一个C#Windows 8应用商店应用程序。我的第一个页面是GroupedItemsPage模板,它是饮料页面。在这里,我在SimpleDataSource.cs文件中编辑了SimpleDataSource方法,以添加我自己的图像和标题(酒类、苏打水等)。这些是标准项目,所以我在那里做了 当点击Booze时,用户会进入Booze页面,该页面也是一个GroupedItemsPage模板。这8个项目(啤酒、葡萄酒、鸡尾酒等)也

我正在使用我编辑的Windows应用商店网格应用程序(xaml)模板创建一个C#Windows 8应用商店应用程序。我的第一个页面是GroupedItemsPage模板,它是饮料页面。在这里,我在SimpleDataSource.cs文件中编辑了SimpleDataSource方法,以添加我自己的图像和标题(酒类、苏打水等)。这些是标准项目,所以我在那里做了

当点击Booze时,用户会进入Booze页面,该页面也是一个GroupedItemsPage模板。这8个项目(啤酒、葡萄酒、鸡尾酒等)也是标准的,因此我在SimpleDataSource.cs文件中创建了第二个方法来显示正确的标题和图像。这里出了问题。当点击“Booze”时,我得到一个“System.ArgumentException”。我创建了另一个公共密封类SampleDataSourcesSecond,就像模板中的那个一样。我还编辑了该页面的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;
    }
protected override void LoadState(对象导航参数,字典页面状态)
{
//TODO:为此分配可绑定组的集合。DefaultViewModel[“组”]
var sampleDataGroupsSecond=SampleDataSourceSecond.GetGroupsSecond((字符串)导航参数);
this.DefaultViewModel[“GroupsSecond”]=sampleDataGroupsSecond;
}
当我在VisualStudio中查看xaml页面时,它显示正确,但在运行时出现错误

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

因此: 1.我这样做对吗? 2.如何解决此系统异常? 3.我应该将代码放在哪里,以便从RSS提要填充GroupDetailPage

提前谢谢


编辑:第2页中的项目可以更改。当点击“酒”时,它会显示在第二页:啤酒、葡萄酒、鸡尾酒、威士忌。。。当点击苏打水:可口可乐、冰茶、雪碧……

一般来说,开箱即用的模板作为一种模式非常好,但很少作为您的实现

  • 我假设您在下面的方法中得到第一行代码的异常

    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;
    }
    
    公共静态IEnumerable GetGroups(字符串uniqueId)
    {
    如果(!uniqueId.Equals(“AllGroups”))抛出新的ArgumentException(“仅支持将“AllGroups”作为组集合”);
    返回_sampleDataSource.AllGroups;
    }
    
    您正试图将一个示例数据源塑造成不适合您的数据模型需要的东西。此数据源的实现明确表示它未设置为以您尝试使用它的方式使用。如果我理解正确的话,你真的有一群一群

  • 同样,底层数据源是一个样本样本在数据模型中包括三个主要字段:
    图像
    标题
    副标题
    。通过XAML数据绑定,示例数据模板(
    StandardStyles.XAML
    中的
    Standard250x250ItemTemplate
    )正在处理一个非常具体和狭窄的情况

  • 我将首先列出您的数据模型实际上应该是什么样子——忘记示例模板中的内容。第7天的指导包括一个很好的章节,内容包括可能对您有帮助的数据绑定

    当你掌握了这一点,你就会意识到你的问题“我应该把代码放在哪里是没有意义的。”除了获取数据并将其分配给你的
    DataContext
    之外,几乎没有其他代码


    特别是对于RSS,也应该有所帮助,因为它专门访问和显示RSS提要中的项目。

    谢谢!我来看看教程!