他の XAP を (「マスター」Silverlight アプリケーションに) 動的にロードするための Tim Heuer のビデオと、リソースのロードを微調整するための他のリンクをたどりましたが、動的にロードされたファイル内からスタイル リソースをロードするという特定の問題で立ち往生しています。 XAP (つまり、Assets\Styles.xaml の内容)。マスター/ホスティング アプリケーションを実行すると、動的 XAP が正常にストリーミングされ、展開情報などを読み取ってアセンブリ パーツをロードできます。ただし、動的 XAP からフォームのインスタンスを実際に作成しようとすると、失敗します。
名前/キー LayoutRootGridStyle のリソースが見つかりません
これは Assets\Styles.xaml ファイルにあります (直接実行すると機能するので、問題ないことがわかります)。なんらかの理由で、これらはアプリケーション リソースとして表示されません。スティックの端が完全に間違っているのか、それとも単に何かが足りないのかわかりません。以下のコード スニペット (少し面倒です。最初に動作させようとしているだけです) ...
'' # Here's the code that reads the dynamic XAP from the web server ...
'' #...
wCli = New WebClient
AddHandler wCli.OpenReadCompleted, AddressOf OpenXAPCompleted
wCli.OpenReadAsync(New Uri("MyTest.xap", UriKind.Relative))
'' #...
'' #Here's the sub that's called when openread is completed 
'' #...
Private Sub OpenXAPCompleted(ByVal sender As Object, ByVal e As      System.Net.OpenReadCompletedEventArgs)
Dim sManifest As String = New StreamReader(Application.GetResourceStream(New     StreamResourceInfo(e.Result, Nothing), New Uri("AppManifest.xaml", UriKind.Relative)).Stream).ReadToEnd
Dim deploymentRoot As XElement = XDocument.Parse(sManifest).Root
Dim deploymentParts As List(Of XElement) = _
        (From assemblyParts In deploymentRoot.Elements().Elements() Select assemblyParts).ToList()
Dim oAssembly As Assembly = Nothing
For Each xElement As XElement In deploymentParts
    Dim asmPart As AssemblyPart = New AssemblyPart()
    Dim source As String = xElement.Attribute("Source").Value
    Dim sInfo As StreamResourceInfo = Application.GetResourceStream(New StreamResourceInfo(e.Result, "application/binary"), New Uri(source, UriKind.Relative))
    If source = "MyTest.dll" Then
        oAssembly = asmPart.Load(sInfo.Stream)
    Else
        asmPart.Load(sInfo.Stream)
    End If
Next
Dim t As Type() = oAssembly.GetTypes()
Dim AppClass = (From parts In t Where parts.FullName.EndsWith(".App") Select parts).SingleOrDefault()
Dim mykeys As Array
If Not AppClass Is Nothing Then
    Dim a As Application = DirectCast(oAssembly.CreateInstance(AppClass.FullName), Application)
    For Each strKey As String In a.Resources.Keys
        If Not Application.Current.Resources.Contains(strKey) Then
            Application.Current.Resources.Add(strKey, a.Resources(strKey))
        End If
    Next
End If
Dim objectType As Type = oAssembly.GetType("MyTest.MainPage")
Dim ouiel = Activator.CreateInstance(objectType)
Dim myData As UIElement = DirectCast(ouiel, UIElement)
Me.splMain.Children.Add(myData)
Me.splMain.UpdateLayout()
End Sub
'' #...
'' # And here's the line that fails with "Cannot find a Resource with the Name/Key      LayoutRootGridStyle"
'' #  ...
System.Windows.Application.LoadComponent(Me, New     System.Uri("/MyTest;component/MainPage.xaml", System.UriKind.Relative))
'' #...
要約すると、考慮すべき 3 つのシナリオがあります... 1) 動的に読み込まれた XAP のスタイル リソースは、動的に読み込まれた Silverlight アプリの app.xaml から参照される、マージされたリソース ディクショナリ (別の xaml ファイル内) に残されます。 (XAP) - マスター アプリケーションを実行しているときに、動的 XAP からのリソースが現在のアプリケーションの下に存在していないように見えます (XAP アセンブリ パーツをロードした後)。エラーが発生します。
2) 動的にロードされた XAP のスタイル リソースは、マージされたリソース ディクショナリ (別の xaml ファイル) から、マージされたリソース ディクショナリ参照の代わりに、動的アプリケーションの app.xaml に移動されます。- マスター アプリケーションを実行すると、動的 XAP DO からのリソースが現在のアプリケーションの下に存在するように見えます (XAP アセンブリ パーツをロードした後)。ただし、エラーは引き続き発生します。
3) 動的にロードされた XAP のスタイル リソースが、呼び出し元/マスター アプリケーションの app.xaml にコピーされます (望ましくありません)。- エラーが発生しなくなりました。