可以手动编辑共享项目以设置资源字典的构建操作。
共享项目由Project.shproj
和Project.projitems
文件组成,打开第二个并在那里找到字典:
<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"),
};