2

我正在使用我编辑的 Windows Store Grid App (xaml) 模板创建一个 C# Windows 8 Store 应用程序。我的第一个页面是 GroupedItemsPage 模板,是 Drinks 页面。在这里,我在 SimpleDataSource.cs 文件中编辑了 SimpleDataSource 方法,以添加我自己的图像和标题(Booze、Soda、...)。这些是标准项目,所以我在那里做了。

中心页面

当点击 Booze 时,用户会转到 Booze Page,它也是一个 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 页面时,它显示正确,但在运行时出现错误。

饮品页面

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

啤酒页面

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

提前致谢!

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

4

1 回答 1

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 数据绑定,示例数据模板 ( Standard250x250ItemTemplatein StandardStyles.xaml) 正在处理一个非常具体和狭窄的案例。

我将首先列出您的数据模型实际上应该是什么样子 - 忘记示例模板中的内容。Microsoft 的 App Builder指南的第 7 天包含一个很好的部分,介绍如何处理数据和文件,包括可能对您有所帮助的数据绑定。

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

特别是对于 RSS,博客阅读器教程也应该有所帮助,因为它专门访问和显示来自 RSS 提要的项目。

于 2013-03-13T23:31:14.907 回答