Windows Phone 7:Windows Phone 与云 — 简介
2010-10-10 07:17:32 来源:WEB开发网您可以通过编辑该 XML,来更改 ListBox 的设计时视图,使之包含我们要处理的所有语言:西班牙语、德语、英语、葡萄牙语、意大利语和法语。 请注意,在您保存此文件之后,设计时视图就会反映您所做的更改。 这是因为 ListBox 控件与 MainViewModelSampleData.xaml 中定义的 Items 元素是数据绑定的。 这一点由 ListBox 控件的 ItemsSource 属性控制。
您还可以在运行时更新 ListBox 的内容。 如果您仔细查看 Visual Studio 生成的文件,您会发现一个使用占位符数据填充的可观察集合 <ItemViewCollection>,这些数据与 MainViewModelSampleData.xaml 文件中包含的数据类似。 例如,如果我希望根据 GetLanguageNamesAsync 方法返回的语言在 UI 中动态地生成语言列表,就需要编辑 MainViewModel.cs 文件来填充 Items 集合。 现在我更愿意指定一个静态语言列表,只对 ItemViewModel 对象集合直接进行编辑。 现在,当我们运行该列表应用程序时,应该会看到一个有点类似图 8 的 UI。
图 8 列表应用程序 UI
当用户触碰其中一个按钮之后,就会进入一个详细信息页面,该页面实际上与我们的 SimpleTranslator 的 UI 是一样的。 该页面包含以下控件:一个用于输入要翻译的文字的 TextBox,一个用于显示翻译后的文本的 TextBlock,以及一个用于提交翻译命令的按钮。 不过,我们不用添加另一个按钮来管理翻译的方向,我们将依靠 Translator API 来实现这一功能。 我们的 SimpleTranslator 应用程序的双向翻译功能在这种多语言方案中是没有意义的,而添加额外的 UI 层又会使应用程序运行迟缓而不流畅。 值得庆幸的是,Translator API 提供了一种可以自动检测传入的语言的方法。
我们先添加一些代码来调用翻译客户端的 DetectAsync 方法,传入我们要翻译的文本,然后再从 DetectAsyncComplete 事件处理程序调用 TranslateAsync。 现在该事件处理程序将如下所示:
void client_DetectCompleted(object sender,
TranslationService.DetectCompletedEventArgs e)
{
string languageCode = e.Result;
client.TranslateAsync(appID, TranslateTextBox.Text, fromLanguage, tolanguage);
}
我们可以从用户选择的按钮知晓我们要翻译成的目标语言。 我们可以从 Translator API 自动检测的结果知晓我们要翻译的源语言。 我们用了不到一小时的编码时间,就创建了一款简易多语种翻译应用程序,用户只需按两下(不计算键入操作)就可获得翻译。
简便性
简便性是 Windows Phone 7 开发的核心。 一款应用程序应专注于实现一种用户方案,而且要实现得很完善。 利用 Windows Phone 7 SDK CTP 自带的工具可以轻而易举地交付操作简便、功能强大的应用程序。 同时我们已经看到,与云交互非常容易,开发人员只需投入少量时间,即可将 Microsoft Translator Web 服务绑定到 Windows Phone 应用程序中。 借助一些熟悉的工具(如 Visual Studio)和明确的规范(如 Metro),Windows Phone 可以和云一起共同为开发人员和用户开辟一片充满新机遇的广阔天地。
更多精彩
赞助商链接