2009-07-30 2 views
3

ビュープロジェクトを複数のモジュールに分割したいと考えています。 私はすべてのモジュールを参照するメインプロジェクトを持ちたいと思います。このメインプロジェクトはモジュールからビューを生成します。ビューをm-v-vmのモジュールに分割する方法

私の質問はどうやってアプリケーションのすべてのスタイルを他のモジュールにバインドできますか?

自動的に認識されますか?

ビューモデルテンプレートはどのように配置されますか?今すぐリソースを辞書に入れて、私がapp.xamlでマージする

shpuld私はそれらを入れました(モジュールプロジェクトに入れたい) どのようにリソースをロードできますか?

答えて

1

あなたはプリズムを使用する場合は容易に達成されたい: あなたがそこに始めるために、サンプルの多くがありますhttp://www.codeplex.com/CompositeWPF

プリズムで答えていないあなたはそれを聞いて唯一の問題はResourceDictionariesですが、それを回避する方法はいくつかありますが、私はこれが最善の方法だと思います:Composite WPF (Prism) module resource data templates

最初の答えはあなたを取得する必要がありますそこ。あなたのモジュールでは少しの設計時間のサポートを失うことになりますが、すべてがこのように実行時に正しく一緒になるはずです。

+0

+1リンク - 興味深い方法です。 –

2

良い質問Anderson Imesが述べたように、Composite WPFを使用することができますが、Managed Extensibility Framework(MEF)を使用すると最近利用可能な別の簡単なオプションがあります。あなたがMEFを使って話していることを正確に行う方法についてはanother question I askedです。基本的に、MEFの拡張機能を使用してアプリケーションリソースを拡張可能にし、モジュールがアプリケーションテンプレートをDataTemplates(Views)で "拡張"します。その後、GUIにViewModelを追加するだけで、WPFはビューをその上に適用します。私はこのモデルでアプリケーションを構築していて、とてもうまくいっています。

この方法を使用する利点は、app.xamlファイルがすべてのViewモジュールについて「認識」する必要がなく、自由にアプリケーションをスライスしてサイコロにすることです(私はフィーチャごとに分割し、レイヤごとに分割します)。

+0

私は、App.xamlがモジュールのビューについて「認識」しているとは、モジュールが独自のリソースをApp.xamlに挿入することを許可しているにすぎません。 MEFは何とかこの制限を回避します(モジュール/プラグインはビューのリソース内のリソースディクショナリを明示的に参照せずにコントロールのスタイルを設定できます)。 –

+0

@Anderson Imes - はい。 App.xamlに他のリソース辞書のマージされた辞書がある場合、他の辞書を(コンパイル時に)名前で呼び出す必要があります。ただし、リンクされた質問の中のメソッドに従うと、モジュールとプラグインは実行時にリソース辞書を挿入できます。 –

+0

MEFがプラグインを読み込むときに実行時にそれらをすべてマージするだけです。ここで得られるのは、アプリケーションにリソースディクショナリを挿入するための宣言型モデルと強制型モデルです。このアプローチについては、何もコンパイルすることはありません。それは、実際にはかなりいいです。 –

関連する問題