我有一个刷子是 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中会看到更改之前需要运行的一些计时器作业。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top