首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Silverlight中的不同ResourceDictionary引用ResourceDictionary中的资源

从Silverlight中的不同ResourceDictionary引用ResourceDictionary中的资源
EN

Stack Overflow用户
提问于 2012-02-29 06:47:58
回答 3查看 18.2K关注 0票数 15

我的App.xaml中有以下一组代码:

代码语言:javascript
复制
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Client.Common;component/Theme/Brushes.xaml"/>
            <ResourceDictionary Source="/Client.Common;component/Theme/Fonts.xaml"/>
            <ResourceDictionary Source="/Client.Common;component/Theme/CoreStyles.xaml"/>
            <ResourceDictionary Source="/Client.Common;component/Theme/SdkStyles.xaml"/>
            <ResourceDictionary Source="/Client.Common;component/Theme/MyAppName.xaml"/>

            <ResourceDictionary Source="/Client.Common;component/Controls/NavigationPanel.xaml"/>
         </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

NavigationPanel.xaml包含的样式如下所示:

代码语言:javascript
复制
<Style x:Key="NavigationPanelListBox" TargetType="ListBox">
    <Setter Property="Background" Value="{StaticResource DarkBackground}" />
    <Lots of XAML>
</Style>

{StaticResource DarkBackground}Brushes.xaml文件(即第一个资源字典)中定义。它被定义为

代码语言:javascript
复制
<SolidColorBrush x:Key="DarkBackground" Color="#FF707176" />

在资源字典中。

在运行时,我得到以下错误:

代码语言:javascript
复制
Cannot find a Resource with the Name/Key DarkBackground [Line: 16 Position: 44]

行号和位置引用app.xaml中的app.xaml资源字典。

我可以引用其他控件的画笔,而不是包含的资源字典。

为什么我不能引用,或者为什么它不解析对合并资源字典中更高级别资源的引用?我在这里错过了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-29 07:39:06

您是否在DarkBackground字典中的任何资源中引用NavigationPanel刷子?

如果是,则可能需要将Brushes资源字典合并到NavigationPanel字典中。

所以在NavigationPanel字典里。

代码语言:javascript
复制
<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/Client.Common;component/Theme/Brushes.xaml" />
</ResourceDictionary.MergedDictionaries>
票数 14
EN

Stack Overflow用户

发布于 2012-03-01 05:23:48

您可以将一个字典包含在另一个字典中(如C#中的“使用”),如下所示:

代码语言:javascript
复制
<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" 
    xmlns:uriMapper="clr-namespace:System.Windows.Navigation;assembly=System.Windows.Controls.Navigation"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:Controls="clr-namespace:APC.IKM.UI.SL.Controls"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">

    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Brushes.xaml"/>
        <ResourceDictionary Source="Fonts.xaml"/>
        <ResourceDictionary Source="CoreStyles.xaml"/>
    </ResourceDictionary.MergedDictionaries>

这就是你要找的吗?Cosmopolitan / Metro项目模板有一个很好的例子.

票数 8
EN

Stack Overflow用户

发布于 2016-06-08 09:07:33

答案是埃里克在这个网站上的回答:https://social.msdn.microsoft.com/forums/windowsapps/en-US/2be9a5f6-5313-448d-a9d9-296bac42215e/using-style-defined-in-merged-dictionary-from-another-merged-dictionary?forum=wpdevelop

Brushes.xaml和NavigationPanel.xaml是独立解析的,然后添加到合并的应用程序资源字典中,这样他们就不了解彼此了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9494729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档