标准的应用程序自然地支持菜单驱动导航,而浏览器应用程序自然地支持超链接导航。但是Windows Presentation Foundation应用程序模型能够让两者混合。
Page类
Page是一种与HTML Web页面(它使Web更加普及了)类似的Windows Presentation Foundation内容。前面我提到过,Windows Presentation Foundation在标准的和浏览器应用程序中都支持超链接驱动的导航。Windows Presentation Foundation中的超链接驱动的导航体验的内容基础是Page(页面)。
在Visual Studio 2005中,通过选择"项目 | 添加新文件 | WinFX 页面"给项目添加标记和后台页面定义。它生成的代码与图5所示的相似。
代码:添加标记和后台页面定义
<!--HomePage.xaml (markup)--> <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="BoxApplicationNavigationWindow.HomePage" ... > ... <!--Order Content--> ... </Page>
// HomePage.xaml.cs (codebehind) using System.Windows.Controls; // Page public partial class HomePage : Page { ... } |
页面标记文件是在页面构建项中配置的。如果使用窗体,可以从URI载入它,这意味着配置Application.StartupUri之后可以在应用程序启动时自动地载入页面:
<!--App.xaml (markup)--> <Application ... StartupUri="HomePage.xaml" /> |
由于Page类不是窗体,也不是衍生自Window的,因此它不能寄宿自身。幸运的是,Application类足够智能,当StartupUri被设置为特定页面的时候,它可以检测到。Application会建立一个窗体,在窗体内寄宿该页面。
Hyperlink类 所有的超链接驱动的应用程序都拥有多个XAML页面,你必须为用户提供一条在页面之间进行导航的途径。你可能猜到了Windows Presentation Foundation是用超链接来实现超链接驱动的导航的。你可以采用下面的方式给页面增加超链接:
<!--HomePage.xaml (markup)--> <Page ... > ... <Hyperlink NavigateUri= "OrderingGuidelinesPage.xaml"> Ordering Guidelines </Hyperlink> ... </Page> |
上面的代码配置超链接以导航到一个XAML页面,它使用的基本编程模型与HTML HREF是一样的。你指定一个要导航到的URI(例子中是OrderingGuidelinesPage.xaml)和文本,用户可以看到文本并点击它来发起导航。
由于太多的可浏览内容都存在于基于HTML的Web页面上,因而Windows Presentation Foundation和超链接能够让你无缝地导航到基于Web的内容。例如,"订单向导"已经存在于BOX应用程序的Web站点上,因此,我们不应该把它们复制成应用程序中的XAML文件,而只需要简单地改变NavigateUri属性的值,如下所示:
<!--HomePage.xaml (markup)--> <Page ... > ... <Hyperlink NavigateUri="OrderingGuidelinesPage.html"> Ordering Guidelines </Hyperlink> ... </Page> |