2009-06-03 12 views
16

1つのプロジェクトにResourceDictionaryがある場合、最初のプロジェクトで定義されたリソースを使用する別のプロジェクトを作成できますか?両方のプロジェクトは、コントロールライブラリではなくWPFアプリケーションであることに注意してください。複数のプロジェクト間でResourceDictionaryファイルを共有することはできますか?

ありがとうございます!限り、プロジェクトBは、その後、あなただけのYourResourceFile.xamlで定義されたリソースを使用することができ、プロジェクトA.

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" /> 
</ResourceDictionary.MergedDictionaries> 

への参照を持っているとして、可能ですもちろんの

+0

重複していますか? http://stackoverflow.com/questions/338056/wpf-resource-dictionary-in-a-separate-assembly –

答えて

28

はい、。

+0

Oh snap。私はそれを試みている!ありがとう!! – Pwninstein

+0

私はこれを知らなかった - クールなトリック! –

+0

プロジェクトが参照を共有しない場合はどうなりますか?私の場合は、PRISMを使用していて、シェルでスタイルを宣言しています。私はいくつかの定義された色を再利用できるようにしたいと思います。 – R4cOON

10

私はアセンブリ自体を参照し、プロジェクト名を使用してはならないことがわかりました。これを動作させるために、pack:///構文を使用する必要もありませんでした。

重複質問にこの答えは使用する書式を指定します(私はこの構文は、.NET 4.0で動作することを確認することができます): https://stackoverflow.com/a/10216253/1260563

具体的に(私は常にそれを考えて構成部品がフォルダの誰かであることを忘れので、 )を使用している:あなたはアセンブリAbc.Def.dllとルートレベルにXyz.xamlと呼ばれるそのDLL内のファイルを持っている場合

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="/<YourAssemblyName>;component/<YourReferencedFileHere.xaml>" /> 
</ResourceDictionary.MergedDictionaries> 

をだからあなたが使用します。

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="/Abc.Def;component/Xyz.xaml" /> 
</ResourceDictionary.MergedDictionaries> 

注:Resharper 7は、アセンブリ自体を参照する必要があると指摘しました。

+0

具体例を示し、パスのコンポーネント部分の必要性を指摘してくれてありがとう。これは、私が遭遇した6つ以上の他のソリューションを助けました。 –

関連する問題