gpt4 book ai didi

WPF 资源合并到 Application.Resources 但在运行时未解析

转载 作者:行者123 更新时间:2023-12-04 22:33:56 25 4
gpt4 key购买 nike

我有一个画笔,它是合并到 Application.ResourcesResourceDictionary 的一部分。

但由于某种原因,当一种样式被应用到其中一个控件时,它在运行时没有得到解决。但是,如果我在抛出异常时从立即窗口调用 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}
...

更新

这似乎发生在用代码创建的菜单和控件上。它可能与那些不属于任何窗口可视化树的控件和菜单有关吗?

最佳答案

您的 SomeStyle.xaml 字典需要直接引用 Brushes.xaml 字典,如下所示:

<ResourceDictionary ...>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Brushes.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Key="SomeStyle">
<Setter Property="SomeProperty" Value="{StaticResource BrushName}" />
</Style>
</ResourceDictionary>

StaticResources只向上搜索当前字典的树,所以你需要传入它需要引用的任何资源。

关于WPF 资源合并到 Application.Resources 但在运行时未解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2543726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com