第十七章 从 Silverlight 控件打开特定的 xaml 页
每个 Silverlight 应用程序项目可 以包含多个 xaml 页面。当你从 web 页面指定 .xap 文件时,可以通过设置 Application.RootVisual 属性来确定默认显示的 xaml 页。
可能有这种情况,从 不同的 Web 页面指定相同的 .xap 文件显示不同的 XAML 文件。可以通过 xaml 文件名或通过 Silverlight 控件的 InitParameters 属性确定一些其他类型。这个属性可以从 Web 页 面设置 Silverlight 控件。从 Web 页面设置的值将通过 Silverlight 控件读取并打开合适的 xaml 页面。
为了说明这点,我们 创建一个 Silverlight 项目,名为“ OpenSpecificXaml ”。
当你编译生成项目 后,放置 Silverlight 控件在你的 Web 页面,如下所示:
< asp : Silverlight InitParameters ="PageName=Page1" ID ="Silverlight1"
runat ="server" Source ="~/ClientBin/OpenSpecificXaml.xap"
MinimumVersion ="2.0.30923.0" Width ="100%" Height ="100%" />
在 上面代码,看见如下代码
InitParameters ="PageName=Page1"
这 里设置的“ InitParameters ”具有键 - 值对关系标识默认打开的 xaml 页面。
现在,将在 App.xaml 文件中读这个属性并为 Application.RootVisual 属性设置适当的页面。这里有个示例用在 App.xaml.cs 中实现这一目标:
private void Application_Startup(object sender, StartupEventArgs e) {
IDictionary <string , string > parameters = e.InitParams;
if (parameters == null ) {
// 没有参数传递时,打开默认的 xaml
this .RootVisual = new DefaultPage();
} else if (parameters["PageName" ] == "Page1" ) {
this .RootVisual = new Page1();
} else if (parameters["PageName" ] == "Page2" ) {
this .RootVisual = new Page2();
} else {
// 打开默认的 xaml
this .RootVisual = new DefaultPage();
}
}