二、观察运行时快照
现在,再次运行示例程序,你会看到如下图所示的快照。
图1. 美国飞机场完整列表(其位置完全显示于地图之上:以绿色小旗标识)。
之后,当你进一步放大显示并选择某一个特定的机场(例如Las Vegas机场)时,这个特定地理的信息将得到进一步的放大。
图2. 当你选择Las Vegas机场时地图焦点自动切换到机场并进行放大显示。
三、启动浏览器外执行功能
至此,一个基本的支持Bing Maps的Silverlight应用程序已经能够完整运行了。从现在开始,我们要使其支持浏览器外(Out Of Browser)运行功能。如果你观察应用程序的布局,你会注意到右上角有一个“Install”按钮。该按钮将会把应用程序安装在本地计算机上。这样一来,我们可以在不考虑本机安全策略的情况下消费RSS回馈并从中获得所需的机场的现状信息。
为此,打开工程的属性对话框并切换到Silverlight选项卡,勾选“Enable application running out of the browser”。然后,点击“Out-Of-Browser Settings”按钮,在对应的子对话框中勾选“Require elevated trust When running outside the browser”选项。
图3. 把Silverlight应用程序配置成以Out of Browser方式运行。
现在,把Silverlight应用程序配置成以Out of Browser方式运行。关闭工程属性对话框,并切换到文件MainPage.xaml,并且添加Install按钮相关的Click事件处理器btnInstall_Click。
现在,打开文件MainPage.xaml.cs并定位到btnInstall_Click方法,添加如下代码:
{
if (Application.Current.InstallState != InstallState.Installed)
Application.Current.Install();
}
以上是检查应用程序是否已经安装否则执行OOB安装的典型的Silverlight代码,在此不赘述。现在,你可以再次运行系统来观察程序运行时的快照。
四、获取飞机场RSS状态信息
现在,应用程序已经能够在浏览器外运行。接下来,我们将访问网站http://www.airportfact.com/提供的RSS回馈信息并用之检索全美国飞机场当前状态信息。
首先,我们要编写一个方法ReplaceHTMLChars来修整一下原始返回的RSS回馈信息。
{
StringBuilder sb = new StringBuilder(str);
sb.Replace("\n", string.Empty);
sb.Replace("<b>", string.Empty);
sb.Replace("</b>", string.Empty);
sb.Replace("<strong>", string.Empty);
sb.Replace("</strong>", string.Empty);
sb.Replace("<small>", string.Empty);
sb.Replace("</small>", string.Empty);
sb.Replace("<br />", "\n");
sb.Replace("<br>", "\n");
sb.Replace("<p>", "\n");
sb.Replace("/", "-");
sb.Replace("</p>", string.Empty);
return sb.ToString();
}