如何访问引用的UWP类库中包含的资源字典?
在UWP主应用中访问组件库资源字典的解决方案
步骤1:确认组件库资源字典的配置
确保组件库内的Dictionary1.xaml文件属性设置正确:
- 右键
Dictionary1.xaml→ 属性 → 生成操作选择Resource,确保资源被正确嵌入组件库。 - 同时检查资源字典内的样式TargetType是否正确指向你的
TemplatedControl,示例:<Style x:Key="TemplatedControlStyle" TargetType="local:TemplatedControl"> <!-- 自定义样式内容 --> </Style>
步骤2:主应用引用组件库项目
右键主应用项目 → 添加 → 引用 → 选择你的组件库项目,完成引用后确保项目能正常编译。
步骤3:在主应用中合并组件库的资源字典
有两种方式可以合并资源字典,根据需求选择:
全局合并(App.xaml中,整个应用都能访问资源)
<Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <!-- 替换[组件库项目名]为你的组件库实际名称 --> <ResourceDictionary Source="ms-appx://[组件库项目名]/Dictionary1.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources>
局部合并(比如MainPage.xaml中,仅当前页面可访问)
<Page.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="ms-appx://[组件库项目名]/Dictionary1.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Page.Resources>
步骤4:为TemplatedControl应用样式
在MainPage.xaml中,先声明组件库的命名空间(替换[组件库命名空间]为实际值):
xmlns:controlLib="using:[组件库命名空间]"
然后直接为控件指定样式:
<controlLib:TemplatedControl Style="{StaticResource TemplatedControlStyle}" />
注意事项
- 若资源仍无法访问,检查组件库是否已正确编译,主应用的引用路径是否无误。
- UWP的资源引用路径使用
ms-appx://协议,这是和WPF的核心区别,WPF用的是pack URI,不要混淆。
内容的提问来源于stack exchange,提问作者DTynewydd
相关产品推荐
相关产品推荐

