我有一个画笔,ResourceDictionary
它是合并到Application.Resources
.
但是由于某种原因,当样式应用于其中一个控件时,它不会在运行时解决。但是,如果我在引发异常时从即时窗口调用 Application.Current.FindResource("BrushName") ,则会找到资源。
我错过了什么吗?WPF 不应该尝试在应用程序的资源中查找资源吗?
更新 应用程序很大,所以我不能发布所有实际代码,但这是资源合并和使用的方式:
Brushes.xaml
<ResourceDictionary ...>
<SolidColorBrush x:Key="BrushName" Color="#12345678" />
</ResourceDictionary>
SomeStyles.xaml
<ResourceDictionary ...>
<Style x:Key="SomeStyle">
<Setter Property="SomeProperty" Value="{StaticResource BrushName}" />
</Style>
</ResourceDictionary>
App.xaml
<Application ...>
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Brushes.xaml" />
<ResourceDictionary Source="SomeStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application ...>
然后一些控件可能会使用这样的资源使用样式:
...
Style={StaticResource SomeStyle}
...
更新
它似乎发生在用代码创建的菜单和控件上。它是否与那些不属于任何窗口的可视化树的控件和菜单有关?