Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据

简介: 原文 Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据 第14部分:在运行时绑定到真实的数据 原文地址:  http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginn...

原文 Windows Phone 8初学者开发—第14部分:在运行时绑定到真实的数据

第14部分:在运行时绑定到真实的数据

原文地址:  http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners/Part-14-Binding-to-Real-Data-at-Runtime

系列地址:http://channel9.msdn.com/Series/Windows-Phone-8-Development-for-Absolute-Beginners

源代码: http://aka.ms/absbeginnerdevwp8 

PDF版本: http://aka.ms/absbeginnerdevwp8pdf

我们的SoundBoard应用程序进展如何?

我们已经有了一个新的数据模型,并且在上一课中我们添加了示例数据,我们在设计时使用它们以帮助我们正确对应用程序的用户界面进行布局,特别是我们使用了绑定到SoundData类实例的数据模板。

在本课中我们将注意力转移到在运行时绑定到真实的数据。

说实话,我们可以在应用程序的运行时使用相同的XAML文件作为“实时数据”。如果您想这样实现,您当然可以,并且您已经有了一个良好的开端。您可以用更多SoundGroup和SoundData的实例构建该XAML文件,然后在运行时通过SoundModel类的LoadData()方法加载该文件。

事实上这可能是一个很好的挑战自己的方式。当您完成本系列课程后,您可以回过头重新创建这个应用程序,但是请在此处使用不同的数据访问方法。努力才能学到东西,这样的练习会迫使您努力找到在运行时加载XAML数据到数据模型的方法。

言归正传,本课的计划:

  1. 在 SoundModel.cs文件中,我们将创建一系列辅助方法,每个辅助方法被设计用于创建SoundData类的实例,这些实例将被添加到SoundGroup中的Items集合。
  2. 在创建完成所有的辅助方法后,我们将修改LoadData()方法,并对每个辅助方法进行调用。所以,当我们调用LoadData()时,真实的数据将会在运行时出现。

1.向应用程序添加真实的运行时数据

这是当前运行的应用程序:

我们没有在运行时加载数据。我们需要完成的是将SoundModel类的每个公共属性,比如说Animals,设置为某个已加载数据的SoundGroup对象的实例。所以,这里是我希望在LoadData()方法中实现互动功能的一个示例:

剩下工作的就是实现CreateAnimalsGroup()辅助方法,如下所示:

  1. CreateAnimalsGroup将返回一个SoundGroup实例。
  2. 我们将创建一个SoundGroup实例并在整个辅助方法中构建它。
  3. 我们将设置Title属性,它将作为PivotItem的标题属性被显示。
  4. 为避免输入声音文件的完整路径,我们将它保存在一个变量中,并在初始化SoundData的每个新实例时对变量进行追加。
  5. 这里我们向SoundGroup的Items属性(类型是List<SoundData>)添加一个新的SoundData实例,并使用对象初始值设定项语法填充每个Title和FilePath属性。

当运行应用程序时:

我们现在可以在动物PivotItem中看到所有的实际数据。

但是等一下,动物PivotItem的标题在哪里?等一下我们将修复该问题。现在让我们完成其余Create___Group()方法的添加。

这里是CreateCartoonsGroup()方法的清单:

这里是CreateTauntsGroup()方法的清单:

这里是CreateWarningsGroup()方法的清单:

现在我们将在LoadData()方法中使用这些辅助方法以填充每个相关的属性:

2. 修复PivotItem标题的数据绑定问题

如果我尝试运行该应用程序,我看不到其它的PivotItem项,因为我们缺少PivotItem标题:

我的第一反应是这是一个绑定问题,数据没有正确加载。我从OnNavigatedTo()事件处理程序开始查找问题。显然,LoadData()在此处被调用:

接着我去查看App.xaml.cs文件。在构造函数中,如果viewModel为null将创建一个新的SoundModel实例:

我怀疑这是一个与时间顺序有关的问题。Pivot控件在App.ViewModel为空时发起了对它的请求,然后DataTemplate在App.ViewModel被填充后发起对它的请求。(译注:这就是为什么看不到Pivot控件的标题而能够看到PivotItem中的数据的原因)

在盯着它看了片刻之后,我在MainPage.xaml.cs中设置了断点:

调试应用程序显示DataContext在调用LoadData()前就被设置。这意味着PivotItem的标题立即就被绑定,但是PivotItems的ItemTemplates/ DataTemplates仅在我们调用了LoadData()才进行绑定。

这就是我们只见到一部分数据,但是没有见到其它数据的原因。解决这个问题的方法很简单:我们将在创建新的SoundModel实例后立即调用LoadData():

通过在App.xaml.cs中显式地添加对LoadData()的调用,我们再次运行应用程序:

PivotItem的标题重新出现,并且我们可以导航到每个类别并查看已经被加载的数据。

回顾

综上所述,本课的重点是如何实现真实的数据。虽然我们可以采用不同的方法,我们选择了创建辅助方法,这些辅助方法包含硬编码的C# SoundData和SoundGroup类的实例。我们还看到了如何排查一个奇怪的有关数据绑定的时间顺序问题,调试并理解事件的顺序是一项宝贵的技能。

请不要忘记我在本课开始时提出的问题。这里我希望您使用不同的数据访问技术重新创建此应用程序,例如用真实数据扩充SampleData.xaml,然后在运行时加载这些数据。有没有想到解决的方法?我敢打赌如果花上一天时间,不需要我的帮助您就能解决问题。通过解决这个问题,您也许会比从本系列其它课程学到的都要多,因为只有通过自己的努力才能真正学到东西。

目录
相关文章
|
4天前
|
算法 关系型数据库 测试技术
WHQL微软驱动签名方案,让驱动程序在Windows系统流畅运行
WHQL认证(Windows徽标认证)是微软设立的严格测试标准,旨在确保驱动程序的兼容性、稳定性和互通性。本文介绍了三种WHQL微软驱动签名方案:单系统签名、多系统签名和硬件兼容性测试方案,分别满足不同开发商的需求。通过WHQL认证,不仅能消除Windows安装警告,提升用户体验,还能获得“Designed for Windows”徽标授权,入列全球Windows Catalog及HCL产品表,提升品牌权威性和采购优先权。此外,访问微软OCA可获取错误反馈,助力产品质量改进。选择合适的签名方案,让驱动在Windows系统中流畅运行!
|
2月前
|
监控 搜索推荐 开发工具
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
197 2
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
|
2月前
|
人工智能 数据处理 C#
AI Dev Gallery:微软开源 Windows AI 模型本地运行工具包和示例库,助理开发者快速集成 AI 功能
微软推出的AI Dev Gallery,为Windows开发者提供开源AI工具包和示例库,支持本地运行AI模型,提升开发效率。
136 13
|
3月前
|
Linux C# iOS开发
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
77 12
|
4月前
|
数据库 数据安全/隐私保护 Windows
Windows远程桌面出现CredSSP加密数据修正问题解决方案
【10月更文挑战第30天】本文介绍了两种解决Windows系统凭据分配问题的方法。方案一是通过组策略编辑器(gpedit.msc)启用“加密数据库修正”并将其保护级别设为“易受攻击”。方案二是通过注册表编辑器(regedit)在指定路径下创建或修改名为“AllowEncryptionOracle”的DWORD值,并将其数值设为2。
3326 3
|
3月前
|
存储 缓存 安全
硬盘数据恢复:恢复硬盘数据的9个实用方法(Windows版)
无论是工作文档、家庭照片,还是其他珍贵的数字资产,数据丢失总是一件让人头疼的事情。然而,当硬盘发生问题时,不必过于慌张——只要正确应对,许多数据都可以被成功恢复。本文将从常见数据丢失原因到具体恢复方法,为您提供全面的硬盘数据恢复指导。
|
5月前
|
应用服务中间件 Shell PHP
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
|
5月前
|
Ubuntu Linux Python
如何利用wsl-Ubuntu里conda用来给Windows的PyCharm开发
如何在WSL(Windows Subsystem for Linux)的Ubuntu环境中使用conda虚拟环境来为Windows上的PyCharm开发设置Python解释器。
483 1
|
5月前
|
Java Windows
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
1908 1
|
6月前
|
Windows Python
python获取windows机子上运行的程序名称
python获取windows机子上运行的程序名称