あるプロジェクトに ResourceDictionary がある場合、最初のプロジェクトで定義されたリソースを使用する別のプロジェクトを作成することはできますか? どちらのプロジェクトも ControlLibraries ではなく、WPF アプリケーションであることに注意してください。
ありがとう!!
あるプロジェクトに ResourceDictionary がある場合、最初のプロジェクトで定義されたリソースを使用する別のプロジェクトを作成することはできますか? どちらのプロジェクトも ControlLibraries ではなく、WPF アプリケーションであることに注意してください。
ありがとう!!
はい、もちろん、プロジェクトBがプロジェクトAを参照している限り、それは可能です。
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>
次に、YourResourceFile.xamlで定義されたリソースを使用できます。
プロジェクト名を使用せずに、アセンブリ自体を参照する必要があることがわかりました。また、これを機能させるために pack:/// 構文を使用する必要もありませんでした。
重複した質問に対するこの回答では、使用する形式を指定しています (この構文が .NET 4.0 で機能することを確認できます): https://stackoverflow.com/a/10216253/1260563
具体的には(誰かが使用しているフォルダだと思ってコンポーネント部分をいつも忘れてしまうので):
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/<YourAssemblyName>;component/<YourReferencedFileHere.xaml>" />
</ResourceDictionary.MergedDictionaries>
したがって、アセンブリ Abc.Def.dll と、その DLL 内の Xyz.xaml というファイルがルート レベルにある場合は、次を使用します。
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Abc.Def;component/Xyz.xaml" />
</ResourceDictionary.MergedDictionaries>
注: Resharper 7 は、アセンブリ自体を参照する必要があることを指摘しました。