为了节省文件大小,应该把多个Silverlight控件放在一个XAP文件里,例如Page1.xaml和Page2.xaml。第一次加载哪一个可以在App的Startup事件的处理事件中选择性加载。

private void Application_Startup(object sender, StartupEventArgs e)
{
 // Load the main control
 this.RootVisual = new Page1();
 // 或者加载Page2
 //this.RootVisual = new Page2();
}

如果要判断,可以通过StartupEventArgs对象的InitParams集合,这是一个键/值对集合,向它传入初始化参数。方法如下:

<asp:Silverlight ID="Xaml1" runat="server" ... InitParameters="Author=renji,Url=http://renji.cnblogs.com,Role=User"/>或在Object里面:
<param name="initParams" value="Author=renji,Url=http://renji.cnblogs.com,Role=User" />
这样在App.xaml.cs中就可以检查值了:
if (!e.InitParams.ContainsKey("Role"))
{
 this.RootVisual = new Page1();
}
else
{
 switch (e.InitParams["Role"])
 {
  case "User":
  this.RootVisual = new Page1();
  break;
  case "Admin":
  this.RootVisual = new Page2();
  break;
  default:
  throw new Exception("缺少权限信息");
 }
}
posted on 2011-09-19 11:47  arong.NET  阅读(162)  评论(0编辑  收藏  举报