在嵌套样式中将样式应用为StaticResource

时间:2013-07-19 14:06:10

标签: wpf

我有一个styles.xaml文件,它合并了一堆颜色定义:

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Colors.xaml" />
</ResourceDictionary.MergedDictionaries>

如果我将styles.xaml中的那些颜色作为StaticResource引用,它们可以正常工作,所以这样可行:

<Style x:Key="Timestamp" TargetType="TextBlock">
    <Setter Property="Foreground" Value="{StaticResource LightTextColorBrush}"/>
</Style>

但是,如果我尝试从包含嵌套样式的样式引用这些颜色,则它不起作用,并被忽略:

<Style TargetType="StackPanel" x:Key="FollowOnChatUserItemStyle">
    <Setter Property="Background" Value="White"/>
    <Style.Resources>
        <Style TargetType="TextBlock">
            <Setter Property="Foreground" Value="{StaticResource LightTextColorBrush}"/>
        </Style>
    </Style.Resources>
</Style>

在这里,我说我的StackPanel样式中的所有TextBlock都应该使用该颜色,但它不起作用。如果我将Value="{StaticResource LightTextColorBrush}"更改为可行的Orange

有什么想法吗?

更新

通过以下回复修正了它。

我已将我的资源添加到App.xaml而不是使用它们的Window.xaml,因此我的App.xaml包含:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Styles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

我已从我的window.xaml中移除了合并,并且我已从StaticResource更改为DynamicResource并且可以正常工作

1 个答案:

答案 0 :(得分:1)

设置为DynamicResource而不是StaticResource,并将Styles.xaml合并到App.xaml。