0

Unity Ioc(Prismなし)で複合WPFアプリケーションを構築してください。 すべての私のリソース(スタイル、テンプレート、写真)は1つのモジュール(Infrastructure)に保存され、シェルモジュールのApp.xamlにマージされています。複合WPFアプリケーションでResourceDictionariesを共有するには?

他のモジュールでは、StaticResourceとして使用します。プロジェクトを開始するとすべてうまく動作しますが、Visual Studio Designerではスタイルが表示されません。 'リソースxyzを解決できませんでした'。

すべてのリソースをデザイン時にも表示するには、どのようにVSを設定する必要がありますか?

可能なソリューション:

  1. 私は、各モジュールのすべてをマージすることができますが、その後、各リソースがロードされた複数のだろう。私は自分自身のResourceDictionary実装(例えば:here)を書くこともできましたが、どこでもリソースをマージするために使用しました。

  2. 私は複合アプリケーション用のプリズムリファレンスソリューションを見つけました。私は方法はわかりませんが、カスタムResourceDictionaryなしで、各モジュールでマージせずに動作します。 VSデザイナーはすべてを示していますが、XAMLエディタでは「リソースxyzを解決できませんでした」と表示されています 質問:これはPrismの機能ですか?または、いくつかの設定が隠されていますか?

+0

参照アプリケーションへのリンクはありますか? –

+0

@AndrewHanlonあなたはプリズムリファレンスを意味しますか?あなたはここでそれを見つける:https://msdn.microsoft.com/en-us/library/gg406140.aspx –

+0

代替ソリューションが見つかった、1と同様) https://github.com/jbe2277/waf/wiki/WPF-Design-Time-Support-(Part-2) しかし、私はまだこのような回避策を各モジュールに追加する必要があります。私が書いたように、プリズムソリューションはソリューションエクスプローラで見ることのできるものは何も必要ありません。本当にプリズム機能ですか?それは私が使用するためにテストすることはできません.net 4と最新のプリズムのニーズ.net4.5 –

答えて

0

解決策は簡単です(プリズムは何もしません)。

すべてのリソースは、シェルモジュールで定義する必要があります(インフラストラクチャモジュールではありません)。 その後、すべてのモジュールをシェルモジュールプロジェクトで参照する必要があります。

各モジュールのリソースをマージする必要はありません。 各モジュールは高レベルモジュールのみを認識し、シェルだけが誰も知っています。

+0

私は、シェルがモジュールの目的を敗北させるどんなモジュールを参照すべきか疑問に思います。そして、あなたはモジュールでリソースを宣言することができます(シェルはコンパイル時に何も知りません)、モジュールの初期化時にこれらを ' //application:,,,/MyModule;Component/Resources/SomeDatatemplates.xaml ")});' – Haukinger

+0

@Haukingerメインスタイルはどうですか?各モジュールにそれを複製しますか? モジュールをどこに登録すればよいですか(シェルにない場合)? –

+0

スタイルには実用的かどうかは分かりませんが、すべてのモジュールで使用されるコードは、すべてのモジュールで参照されるアセンブリに入ります。モジュールカタログについては、設定ファイル(顧客が変更が必要な場合)や、特定のパターン( '* .module.dll'など)に一致するモジュールとして、このようなカタログ実装ですべてのファイルを読み込むことができますhttps://prismextensions.codeplex.com/wikipage?title=SmartDirectoryModuleCatalog – Haukinger

関連する問題