2011-07-15 4 views
0

今、私のXAPファイルは大きくなっており、小さなアプリケーションに分割するソリューションが必要です。 MEFまたはPRISMが私の問題を解決する可能性がありますMEFを使用してプロジェクトをより小さなxapに分割し、その場でダウンロードできますか?

オンラインチュートリアルは読んでいますが、現在のプロジェクトにどのように適用できるかはまだ分かりません。

私は私のプロジェクトについて説明しましょう:MainPage.xamlを-in

を、それだけでONE menucontrolを持っています。ただし、そのメニューコントロールは、サービス呼び出しによって取得されたデータを基にして構築されます。あなたは私のメニュー画面

http://www.flickr.com/photos/[email protected]/sets/72157627077751863/

-EverytimeがのmenuItem上のユーザーがクリックで見ることができる、というのmenuItemのウィンドウには、ユーザーやってビジネスの仕事をできるようにポップアップされます。あなたは私のGeneralLedger_JournalPostingの写真で見ることができます。 journalPosting menuItemは、GeneralLedgerセクションに属します。

http://www.flickr.com/photos/[email protected]/sets/72157627077751863/

これは私のプロジェクトに関するすべてだ私はmenuControl

上のmenuItemのクリックイベントを通じてポップアップメニューアイテムウィンドウを表示する方法
private void MenuItemClick(object sender, RadRoutedEventArgs args) 
    { 
     RadMenuItem item = args.OriginalSource as RadMenuItem; 
     SFMenu sFMenu = item.Header as SFMenu; 
     OpenMenuItemScreenBy(sFMenu.Name); 

    } 

    private void OpenMenuItemScreenBy(string menuName) 
    { 
     if (menuName == "User Management") 
     { 
      var userManagement = new UserManagement(); 
      //userManagement.WindowStartupLocation = WindowStartupLocation.Manual; 
      userManagement.Top = 50; 

      userManagement.Show(); 
     } 
     //Testing area 
     else if (menuName == "Testing") 
     { 
      Testing t = new Testing(); 
      t.Top = 50; 
      t.Show(); 
     } 
     // 
     ...... 
     ....... 

を示すのコードです。基本的に、私はちょうど私のmenuItemのそれぞれに異なる画面を作成する必要があります。私のmenuItemの数が増え続けているので、より対応するウィンドウ画面を作成する必要があります。そしてそれが私のXAPを大きくしてくれます。

ソリューション:

私は別々のXAPに(例えばGeneralLedger_JournalPostingなど)私の窓のMenuItem画面のそれぞれを区切るための方法を考えています。私の主なXAPファイルにはmenuControlしか含まれていません。

しかし、ユーザーがmenuItem(たとえばGeneralLedger/JournalPosting)をクリックすると、対応するmenuItem XAPファイルをその場で読み込む方法を知る必要があります。そして、JournalPosting画面を開きます。

ユーザが再びそのmenuItemをクリックすると、ダウンロードは必要ありません。

(私はMEFチュートリアルを見て、DeloymentCatalogを使用する必要があることを知っていますが、ダイナミックXAPのusercontrolを手動でコードにアクセスさせる例はありません。ファイル)第二に

私のMenuItemウィンドウ画面のそれぞれは、例えば、(同じサードパーティのDLLを使用するので:GridViewの、ナビゲーション、...)のためのdllを。だから、あなたは私にそれらのdllの1つの時間だけをダウンロードさせる方法を教えてもいいですか?なぜなら、これらのdllをそれぞれのmenuItemウィンドウのXAPに入れると、対応するXAPがダウンロード要求されるたびにredownloadされると思います。

ありがとうございます。

答えて

0

ここをクリックしてください:http://www.codeproject.com/KB/silverlight/MEFDynamicLoading.aspx。このプロジェクトでは、xapをオンデマンドでロードし、ダウンロード後に表示する方法について説明します。

興味深いのは、MainPageModel.csです。 xapのロードとパネルへのコンテンツの挿入があります。したがって、DeploymentCatalogServiceに "AddXap"を要求して、既に読み込まれている場合は、>コールバックを呼び出したり、イベントを発生させたりします。

dllについては、それらをあなたのMainAppに入れなければなりません。ダウンロードしたアプリケーションでは、MainApp定義のdllファイルをCopyLocal = falseに設定する必要があります(参考文献のdllのプロパティにあります)

私はこれが助けてくれることを願っています!

BR、

TJ

関連する問題