0

文件 app.xaml

<Application.Resources>
    <ResourceDictionary>
        <SolidColorBrush x:Key="appBrush" Color="Red"/>

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

文件 Dictionary1.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ControlTemplate x:Key="ct">
        <Rectangle Fill="{StaticResource appBrush }"/>
    </ControlTemplate>
</ResourceDictionary>

然后 MainWindow 使用定义的模板。

<Control Template="{StaticResource ct}"/>

跑。它说找不到appBrush。有什么问题?

请注意,将 StaticResource 更改为 DynamicResource 绝对可以让它工作。但是是什么原因迫使我做出改变呢?

4

1 回答 1

0

将您的 App.xaml 更改为此,它将起作用:

<Application.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary>
           <SolidColorBrush x:Key="appBrush" Color="Red"/>
        </ResourceDictionary>
        <ResourceDictionary  Source="Dictionary1.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Application.Resources>

我相信这与资源如何合并在一起有关。在这些类型的情况下,我总是使用 Brushes.xaml 资源字典来定义我的所有画笔,并将其合并到任何其他资源字典之前。

于 2012-07-31T04:18:22.160 回答