无法在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失败的合并资源字典

无法在windows phone 8项目中找到具有名称/密钥的资源

首先:如果将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的引用。