2011-01-17 4 views
4

私はMEFを介して接続している別々のdllファイルにUIアプリ拡張を持っています。彼らは、ダイアログ(WPFユーザーコントロールを)持っている場合私の質問は、私は、ダイアログそうのような拡張のプロパティにする必要がありますされていますMEF別々のアセンブリとローディングコントロールを持つWPFアプリケーション

public UserControl ExtDialog { get; set; } 

または私はパックURIでそれらをロードする必要がありますか?

public string ExtDialogUri { get; set; } 

私はパックURIに傾いていますが、実際に動作するかどうかは不明です。どのように "をお勧めしますか?"の方法はどちらですか?

注:これらのダイアログは、NavigationService.Navigate()でナビゲートされます。方法。

答えて

4

どちらのオプションも使用しません。問題は、ダイアログが作成されたときの両方の方法に柔軟性がないことです。最初の方法を使用すると、ダイアログが必要かどうかに関係なく、常に作成されます。 pack URLでは、拡張機能がダイアログのインスタンスの作成方法を制御できないという問題があります。作成後にコントロールを初期化する必要がある場合(ビューモデルを作成する必要など)私の意見で

、ダイアログを作成するために使用される工場を公開した方がよい:

public IExtDialogFactory ExtDialogFactory { get; set; } 

public interface IExtDialogFactory 
{ 
    UserControl CreateDialog(); 
} 
+0

私は怠け者財産を作ることができ、それが必要になったとき、それが作成されますでしょう。どのようにそのことについて? –

+0

私はこのダイアログがナビゲーションフレームワークにナビゲートされることを言及する必要があると思います。 –

+0

はい、Lazy が役立ちますが、拡張機能はダイアログの作成方法を制御できません。これは私の最大の制限です。私はナビゲーションフレームワークを使用していません。それがそこに行く方法かもしれない。 –

関連する問題