WPF资源合并到Application.Resources,但在运行时未解决
-
23-09-2019 - |
题
我有一个刷子是 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}
...
更新
在代码中创建的菜单和控件似乎发生了这种情况。它可以与那些控件和菜单不是任何窗户视觉树的一部分有关吗?
解决方案
您的sosestyle.xaml字典需要直接参考brush.xaml字典,就像这样:
<ResourceDictionary ...>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Brushes.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Key="SomeStyle">
<Setter Property="SomeProperty" Value="{StaticResource BrushName}" />
</Style>
</ResourceDictionary>
staticresources仅搜索当前字典的树,因此您需要传递需要参考的任何资源。
其他提示
进入Central Administration - >管理服务应用程序 - >用户配置文件服务应用程序。
在“我的网站设置”下您有“设置我的网站”,在此处可以更新“我的站点主机位置”的值以匹配您的新设置。确保在底部单击“确定”。
不确定这是否立即通过,或者如果在您的用户的GUI中会看到更改之前需要运行的一些计时器作业。
不隶属于 StackOverflow