首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DynamicResource不工作

DynamicResource不工作
EN

Stack Overflow用户
提问于 2015-01-11 08:24:08
回答 1查看 2.9K关注 0票数 2

我有一个CustomControl库,它有一个控件,定义如下:

代码语言:javascript
复制
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfCustomControlLibrary1">

<SolidColorBrush x:Key="Test"
                 Color="Red" />

<Style TargetType="{x:Type local:CustomControl1}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:CustomControl1}">
                <Border Background="{StaticResource Test}" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

它工作得很好。

但是,如果我将'StaticResource‘更改为'DynamicResource',红色不再被拾取吗?

为什么会这样呢?

EN

回答 1

Stack Overflow用户

发布于 2015-01-12 02:45:53

您需要合并资源字典。将对包含CustomControl1样式的ResourceDictionary的引用添加到App.xaml:

代码语言:javascript
复制
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/AssemblyName;component/PathToResourceDictionary"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

在实际运行应用程序之前加载XAML期间,将解析StaticResource并将其分配给属性。它将只被分配一次,并且忽略对资源字典的任何更改。

DynamicResource在加载期间将表达式对象分配给属性,但直到运行时才实际查找资源,此时需要表达式对象的值。这会推迟查找资源,直到运行时需要它。一个很好的例子是对稍后在XAML中定义的资源的前向引用。另一个例子是直到运行时才会存在的资源。如果源资源字典发生更改,它将更新目标。

希望这能有所帮助。

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

https://stackoverflow.com/questions/27882671

复制
相关文章

相似问题

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