无法在windows phone 8项目中找到具有名称/密钥的资源
本文关键字:有名称 密钥 资源 windows phone 项目 | 更新日期: 2023-09-27 18:13:26
我创建了一个新的Windows Phone 8 (Silverlight)项目添加Themes文件夹,添加两个资源字典到这个文件夹,一个包含 solidcolorbrush 和一个包含colors。
我在App.xaml中合并了这两个资源字典
主页。我使用了一个solidcolorbrush的背景网格。
代码片段:
App.xaml:
<Application.Resources>
<ResourceDictionary x:Key="mainStyle">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/resTest;component/Themes/MyColors.xaml"></ResourceDictionary>
<ResourceDictionary Source="/resTest;component/Themes/MyStyles.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
<local:LocalizedStrings xmlns:local="clr-namespace:resTest" x:Key="LocalizedStrings"/>
</ResourceDictionary>
</Application.Resources>
MainPage.xaml:
<Grid x:Name="LayoutRoot" Background="{StaticResource RedSolidColorBrush}">
</Grid>
MyColors.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Color x:Key="RedColor">#FFFF0000</Color>
</ResourceDictionary>
MyStyles.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<SolidColorBrush x:Key="RedSolidColorBrush" Color="{StaticResource RedColor}"></SolidColorBrush>
</ResourceDictionary>
异常:
引用
System.Windows.Markup。在System.Windows.ni.dll中的XamlParseException'它显示运行时错误:
抛出异常:'System.Windows.Markup. 'XamlParseException"System.Windows.ni.dll
附加信息:无法找到具有名称/密钥的资源[font:宋体][font:宋体]
我错在哪里?
引用: https://msdn.microsoft.com/en-us/library/cc903952 (VS.95) . aspx
https://joshsmithonwpf.wordpress.com/2010/09/24/consuming-resources-from-external-assemblies-in-silverlight-4/
引用windows phone 7失败的合并资源字典
首先:如果将ResourceDictionary文件的构建操作设置为Resource,则可以通过以下方式引用它:
/<assembly name>;component/<resource file path>
如果构建操作被设置为Content,那么你可以这样引用它:
/<resource file path>
:我们需要在MyStyles中合并MyColors。谢谢@ChrisF
实际上我已经习惯了为Windows Phone 8.1或UWP编写代码,它们没有这些问题。
你需要能够从MyStyles.xaml
中看到MyColors.xaml
,否则它将无法找到RedColor
的定义。
如果您在MyStyles.xaml
中包含以下内容:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="...";component/MyColors.xaml" />
</ResourceDictionary.MergedDictionaries>
其中"…"是MyColors.xaml
的路径,那么你应该能够参考其中定义的颜色。
虽然合并App.xaml
中的字典,你已经做了应该产生相同的效果。如果您更改MyStyles.xaml
以包含MyColors.xaml
,则应该从App.xaml
中删除对MyColors.xaml
的引用。