WEB开发网
开发学院图形图像Flash 技巧:在Silverlight中如何访问外部xap文件中User... 阅读

技巧:在Silverlight中如何访问外部xap文件中UserControl

 2008-10-09 11:38:53 来源:WEB开发网   
核心提示: Stream stream = Application.GetResourceStream(new StreamResourceInfo(packageStream, null),new Uri("AppManifest.xaml", UriKind.Relative)

Stream stream = Application.GetResourceStream(
    new StreamResourceInfo(packageStream, null),
    new Uri("AppManifest.xaml", UriKind.Relative)).Stream;
String appManifestString = new StreamReader(stream).ReadToEnd();

有了AppManifest.xaml中内容,就可以根据它来构造一个Deployment对象,Deployment对象提供了当前应用程序的Part和本地化信息清单,它的定义如下所示:

技巧:在Silverlight中如何访问外部xap文件中UserControl

注意它定义了一个很重要的属性Parts,通过该属性我们就可以访问所有Deployment中的程序集。好了,现在我们看如何通过AppManifest.xaml中的内容构造Deployment对象,以及遍历其中的程序集,如下代码所示:

Deployment deployment = (Deployment)XamlReader.Load(appManifestString);
Assembly assembly = null;
foreach (AssemblyPart assemblyPart in deployment.Parts)
{
  if (assemblyPart.Source == assemblyName)
  {
    String source = assemblyPart.Source;
    StreamResourceInfo streamInfo = Application.GetResourceStream(
      new StreamResourceInfo(packageStream,
      "application/binary"),
      new Uri(source,UriKind.Relative));
    assembly = assemblyPart.Load(streamInfo.Stream);
    break;
  }
}
return assembly;

注意,在遍历时如果我们找到程序集名等于我们想要访问的程序集,则直接返回该程序集。最终完整的LoadAssemblyFromXap方法代码如下:

上一页  1 2 3 4  下一页

Tags:技巧 Silverlight 如何

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接