我们有一个使用模板10的UWP应用程序。资源位于同一解决方案中的UWP类库中。当我们运行应用程序时,我们会收到错误
{Windows.UI.Xaml.Markup.XamlParseException:找不到'ms-resource:/// Files / Styles \ ButtonStyle.xaml'中的资源。
在App.xaml中我们有
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles\Custom.xaml" />
<ResourceDictionary Source="Styles\ButtonStyle.xaml"/>
<ResourceDictionary Source="Styles\ListsStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
我们遵循了
中的指导Windows 10 Universal Merged Dictionaries
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ms-appx:///Styles/Custom.xaml" />
<ResourceDictionary Source="ms-appx:///Styles/ButtonStyle.xaml"/>
<ResourceDictionary Source="ms-appx:///Styles/ListsStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
然后错误是
{Windows.UI.Xaml.Markup.XamlParseException:无法分配给属性&#39; Windows.UI.Xaml.ResourceDictionary.Source&#39;因为类型&#39; Windows.Foundation.String&#39;无法分配到类型...
我们也尝试了ResourceDictionary in separate library
中的解决方案<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/LibraryName;component/Styles/Custom.xaml" />
<ResourceDictionary Source="pack://application:,,,/LibraryName;component/Styles/ButtonStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/LibraryName;component/Styles/ListsStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
然后错误是
{Windows.UI.Xaml.Markup.XamlParseException:找不到来自pack:// application:,,, / LibraryName; component / Styles / Custom.xaml'的资源
我们如何在UWP类库中引用ResourceDictionary?
答案 0 :(得分:4)
正如@Justin指出的那样,问题在于您忘记在URI中添加类库名称。让我们假设您有一个名为&#34; ClassLibrary1&#34;的UWP类库。在你的解决方案然后你可以将它们合并为:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ClassLibrary1/Styles/Custom.xaml" />
<ResourceDictionary Source="ClassLibrary1/Styles/ButtonStyle.xaml"/>
<ResourceDictionary Source="ClassLibrary1/Styles/ListsStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
或者
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ms-appx:///ClassLibrary1/Styles/Custom.xaml" />
<ResourceDictionary Source="ms-appx:///ClassLibrary1/Styles/ButtonStyle.xaml"/>
<ResourceDictionary Source="ms-appx:///ClassLibrary1/Styles/ListsStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
也不要忘记添加&#34; ClassLibrary1&#34;进入您的主项目参考文献。
此外,如果您的类库不在同一个解决方案中,那么您需要检查构建&#34;生成库布局&#34; 选项>在类库的属性页面下进行配置
因为在WinRT环境中,资源不再嵌入到程序集中,而是作为内容放在dll旁边。所以我们需要生成库布局,以便我们可以方便地在其他项目中引用dll。有关详细信息,请参阅my previous answer。