2012-01-05 12 views
0

私は最近別のxapファイルに分割したSilverlightアプリケーションを使用しています。SilverlightのさまざまなXAPファイル - 共有コンテキスト

これはこれです。ユーザーからの少数の入力を取り込むxapファイル1がデータベースに残っています。ユーザーがこのUI上のボタン(xapファイル1から)をクリックすると、xapファイル2がロードされます。このxapファイル2は、より多くの入力を要求し、データベースに保存します。

xapファイル1からxapファイル2を呼び出せましたが、UIはデータベースから情報を取得できないようです(UIは以前のUIによって保持されていたものを示しています)。ユーザの入力を持続することができる。私は、xapファイル2は何とか何とか何とかどこにどのように保持するかを伝える必要があることを認識しています。

これは私が2

 WebClient wc = new WebClient(); 
     wc.OpenReadCompleted += new OpenReadCompletedEventHandler(OpenReadCompleted); 
     Uri uri = new Uri("xapfile2.xap", UriKind.Relative); 
     wc.OpenReadAsync(uri); 


private void OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
    { 
     Uri uri = new Uri("xapfile2.dll", UriKind.Relative); 

     StreamResourceInfo resource_stream = App.GetResourceStream(new StreamResourceInfo(e.Result, null), uri); 

     AssemblyPart part = new AssemblyPart(); 
     Assembly assembly = part.Load(resource_stream.Stream); 
     UIElement control = assembly.CreateInstance("xapfile2.Window") as UIElement; 
     if (control != null) 
     { 
      RadWindow window = (RadWindow)control; 
      window.ShowDialog(); 

     } 
    } 

XAPファイルを読み込む方法です(私は別のXAP年代にそれらを分割する前に、このUIのすべてが働いていた。私たちは、それらを分割する理由を持っていた)

どれでも役立つだろう大幅Iは、例えば、次の試み

UPDATE

を理解さlinkで、別のxapファイルからデータベースのすべての情報を使用して2番目のUIを起動することができました。

今私は新しい問題にぶつかったようです。 2番目のUIでキャンセルを行うと、removeXapを呼び出す2番目のxapをカタログからアンロードする必要がありますか?私がそうすると、Compositionは変わらないエラーになります。

1)再構成不可能なインポート 'xapfile2.Views.ViewModel(ContractName = "MyViewModel")'部分 'xapfile2.Views.MyView'で禁止されているエクスポートの変更。何か案は?。

おかげ K

+0

ため

みんなありがとうは、あなたがあなたのためにXAPファイル・モジュールをロードするためにプリズムを使用したと考えたことがありますか?それが助けになるかもしれない。 –

+0

新しい問題は新しい質問でなければなりません。他の人が同じ問題を抱えているか、同じ問題を抱えていて、それを検索したいことがあります。 – foson

答えて

1

あなたのXAPファイルに持参するためのフレームワークを使用する必要があります。あなたは車輪を再発明しています。

私が提案しているのは、作成しているものをMicrosoftが作成したフレームワークであるMEFです。

MEFには展開カタログの概念があり、xapファイルをダウンロードして読み込みます。次に、インタフェースや契約のようなパターンを使用して、オブジェクトを作成し、それらを画面に表示し、より多くの入力を行うことができます。 http://codebetter.com/glennblock/2010/03/08/building-hello-mef-part-iv-deploymentcatalog/

グッドラック:

は、この例を参照してください!

+0

私は[link](http://codebetter.com/glennblock/2010/03/08/building-hello-mef-part-iv-deploymentcatalog/)の例を試してみました。別の場所から2番目のUIを起動できましたデータベースからのすべての情報を含むxapファイル。今私は新しい問題にぶつかったようだ。 2番目のUIでキャンセルを行うと、removeXapを呼び出す2番目のxapをカタログからアンロードする必要がありますか? –

+0

こんにちはエレミア、あなたの答えをありがとう。 –

0

別個のXAPファイルを作成しても境界線は作成されません.2番目のXAPが読み込まれると、そのタイプが同じAppDomainに読み込まれます。 Xap1とXap2のクラス間で何らかの共通のメッセージング・バスが必要なようです。イベントアグリゲータを使用できます。多くのフレームワークは1つを持っているか、自分で使うことができます - 両方のxapで参照されるdllでそれをビルドします(カスタムイベントタイプ)。 私は使ったと思いますhttp://www.keith-woods.com/Blog/post/Rx-Event-Aggregator.aspx

+0

私の更新を参照していただきありがとうございます。 –

0

多くの苦労の末、私はxapファイルに冗長なアセンブリがあることが分かりました。明らかに、アセンブリには矛盾があってはいけません。 2番目のxapに必要なアセンブリでCopyLocal = Falseを設定すると、この問題が解決されたようです。あなたのヒント

K

関連する問題