【发布时间】:2024-01-15 17:32:02
【问题描述】:
所以我有一个 Windows 通用类库,其中有一个资源字典,我想在 App.xaml 中与我的 Windows 10 通用应用程序的主资源字典合并。
我的 App.xaml 只是从同一个程序集合并到我的主资源字典中。
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
然后,从我的主资源字典 (Styles/Styles.xaml) 中,我正在合并来自同一个程序集的其他资源字典。这是我想从另一个程序集合并到资源字典中的地方:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Fields.xaml"/>
<ResourceDictionary Source="DataTemplates.xaml"/>
<!--<ResourceDictionary Source="/{AssemblyName};component/Shared.xaml" />-->
<!--<ResourceDictionary Source="pack://application:,,,/{AssemblyName};component/Shared.xaml" />-->
<ResourceDictionary Source="ms-appx:///{AssemblyName}/Shared.xaml" />
</ResourceDictionary.MergedDictionaries>
我已尝试将其添加到我的主要资源字典中:
<ResourceDictionary Source="/{AssemblyName};component/Shared.xaml" />
还有这个……
<ResourceDictionary Source="ms-appx:///{AssemblyName}/Shared.xaml" />
基于this article 关于 Windows 8.x 应用商店应用,这似乎是它应该工作的方式。但是还是不行。
还有这个……
<ResourceDictionary Source="pack://application:,,,/{AssemblyName};component/Shared.xaml" />
(这是 WPF 方式,我知道,但我想我还是会尝试一下!)
但似乎没有一个工作......
我的应用程序程序集中的资源字典的构建操作设置为“页面”。这些资源字典只是在合并中使用它:
<ResourceDictionary Source="Styles/Styles.xaml"/>
我收到以下神秘错误:
未能分配给属性 'Windows.UI.Xaml.ResourceDictionary.Source' 因为类型 'Windows.Foundation.String' 不能分配给类型 'Windows.Foundation.Uri'。 [行:12 位置:37]
【问题讨论】:
-
您是否已将您的库添加为项目的参考?我正在使用
<ResourceDictionary Source="ms-appx:///MyLibrary/Resources.xaml"/>,它似乎可以正常工作。 -
如何将此资源字典添加到合并字典中?然后会发生什么?
-
是的,添加 {AssemblyName} 作为对我的应用程序项目的引用 :)
-
你们在另一个程序集中的资源字典上设置了什么构建操作?
-
好的,看来它确实适用于您建议的 Romasz。我不知道怎么做,但我怀疑当我尝试构建操作/源 URI 的所有不同组合时,我必须在尝试该技术时将构建操作设置为 Page 以外的其他内容。