<Application.Resources>
<ResourceDictionary>
<SolidColorBrush x:Key="appBrush" Color="Red"/>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary1.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
<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肯定会让它工作。但是迫使我做出改变的原因是什么?
答案 0 :(得分: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资源字典来定义我的所有画笔,并将其合并到任何其他资源字典之前。