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

Posted

技术标签:

【中文标题】在 windows phone 8 项目中找不到具有名称/密钥的资源【英文标题】:Cannot find a Resource with the Name/Key in windows phone 8 project 【发布时间】:2017-02-27 16:11:43 【问题描述】:

我创建了一个新的 Windows Phone 8 (Silverlight) 项目。 添加了Themes文件夹,在该文件夹中添加了两个资源字典,一个包含solidcolorbursh,一个包含colors

我在 App.xaml 中合并了这两个资源字典

在 MainPage.xaml 中,我使用了一个solidcolorbursh 作为网格背景。

代码片段:

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.ni.dll 中的“System.Windows.Markup.XamlParseException” 它显示运行时错误:

抛出异常:“System.Windows.Markup.XamlParseException”在 System.Windows.ni.dll

附加信息:找不到具有名称/键的资源 RedColor [行:14 位置:44]

我哪里错了?

参考文献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/

Referencing a merged resource dictionary in windows phone seven failing

【问题讨论】:

【参考方案1】:

您需要能够从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 的引用。

【讨论】:

【参考方案2】:

首先: 如果 ResourceDictionary 文件的构建操作设置为 Resource,您可以通过以下方式引用它:

/<assembly name>;component/<resource file path>

如果构建操作设置为内容,那么您可以通过这种方式引用它:

/<resource file path>

然后: 我们需要在 MyStyles 中合并 MyColors。 谢谢@ChrisF

其实我习惯用 Windows Phone 8.1 或 UWP 编码,没有这些问题。

【讨论】:

以上是关于在 windows phone 8 项目中找不到具有名称/密钥的资源的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 Windows 8 上安装 netCDF4 时出现“需要 Python 版本 2.7,在注册表中找不到”错误

无法激活windows 在域名系统(DNS)中找不到密钥管理服务(KMS)主机

Dlib 库在 iOS 项目(Xcode 8)中找不到任何 STL 模板

在项目中找不到任务猫!圈子

在 Xcode 8.2.1 中找不到“Cordova/CDV.h”文件

在根项目中找不到 Android Studio 0.8 任务组合