.NET MAUI中如何跨项目共享XAML样式资源?
.NET MAUI 跨项目共享 Style 资源实现方案
完全可以实现同一解决方案下多个MAUI项目共享MyResources中的Colors.xaml和Styles.xaml,以下是具体步骤:
1. 调整MyResources项目配置
- 将两个MAUI项目中的
Colors.xaml和Styles.xaml迁移到MyResources/Resources/Styles目录下 - 修改MyResources项目的
.csproj文件,确保这两个XAML文件被正确标记为MAUI可识别的资源:
<ItemGroup> <!-- 标记样式XAML为MAUI资源 --> <MauiXaml Include="Resources/Styles/*.xaml" /> </ItemGroup>
2. 为MAUI项目添加项目引用
在Project[1/2]的右键菜单中选择「添加」→「项目引用」,勾选MyResources项目,完成跨项目引用关联。
3. 修改App.xaml引用共享资源字典
不要使用文件相对路径(编译运行时会找不到资源),改用程序集引用格式:
<Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <!-- 格式:pack://application:,,,/程序集名称;component/资源相对路径 --> <ResourceDictionary Source="pack://application:,,,/MyResources;component/Resources/Styles/Colors.xaml" /> <ResourceDictionary Source="pack://application:,,,/MyResources;component/Resources/Styles/Styles.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources>
注意:将
MyResources替换为你的MyResources项目实际的程序集名称(可在MyResources.csproj的<AssemblyName>节点查看)
4. 清理并验证
- 删除Project[1/2]自身的
Resources/Styles/Colors.xaml和Styles.xaml文件 - 清理解决方案,重新生成所有项目
- 运行MAUI项目,验证样式是否正常加载
为什么之前的相对路径不行?
直接使用文件相对路径(../MyResources/...)仅在设计时可能临时生效,但编译后MyResources的资源会被嵌入到其程序集内,MAUI项目无法通过文件路径访问跨程序集的资源,必须使用程序集引用的方式才能正确加载。
内容的提问来源于stack exchange,提问作者GChapX
相关产品推荐
相关产品推荐

