19

あるプロジェクトに ResourceDictionary がある場合、最初のプロジェクトで定義されたリソースを使用する別のプロジェクトを作成することはできますか? どちらのプロジェクトも ControlLibraries ではなく、WPF アプリケーションであることに注意してください。

ありがとう!!

4

2 に答える 2

31

はい、もちろん、プロジェクトBがプロジェクトAを参照している限り、それは可能です。

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

次に、YourResourceFile.xamlで定義されたリソースを使用できます。

于 2009-06-03T20:31:00.017 に答える
11

プロジェクト名を使用せずに、アセンブリ自体を参照する必要があることがわかりました。また、これを機能させるために 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 は、アセンブリ自体を参照する必要があることを指摘しました。

于 2012-09-18T13:41:09.150 に答える