共有プロジェクトを手動で編集して、リソース ディクショナリのビルド アクションを設定することができます。
共有プロジェクトはProject.shproj
とProject.projitems
ファイルで構成され、2 番目に開き、そこに辞書を見つけます。
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)Dictionary.xaml" />
</ItemGroup>
その後に追加
<ItemGroup>
<Page Include="$(MSBuildThisFileDirectory)Dictionary.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
</ItemGroup>
csproj
辞書を含むWPFプロジェクトの通常のコピー/貼り付けです。
プロジェクトが Visual Studio に読み込まれると、このビルド アクションは表示されませんが、動作するようです。共有プロジェクトにファイルを追加しても、この手動の変更には影響しません。
これで、リソース ディクショナリを含むプロジェクトを共有できるようになりました。
リソース ディクショナリは、プロジェクトのルートにある場合のように、アプリケーション ディクショナリにマージできます (xaml デザイナーで静的/動的リソースとして使用するため)。
<Application.Resources>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries>
<!-- doesn't really exists in project -->
<ResourceDictionary Source="Dictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
および/または手動でロードします。たとえば、このパック Uriを使用します。
var dictionary = new ResourceDictionary()
{
Source = new Uri("pack://application:,,,/FlexProperty.xaml"),
};