【发布时间】:2010-03-30 08:23:54
【问题描述】:
我有一个属于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}
...
更新
这似乎发生在用代码创建的菜单和控件上。它是否与那些不属于任何窗口的可视化树的控件和菜单有关?
【问题讨论】:
-
您能否发布一些有关如何合并字典的代码。
-
我在这里复制了您的示例,它为我正确构建和运行,看来问题出在您代码中的其他地方。
-
有幸得到这个答案吗?
标签: wpf resources resourcedictionary