gpt4 book ai didi

wpf - WPF ResourceDictionary 中 StaticResource 的范围是什么?

转载 作者:行者123 更新时间:2023-12-04 01:07:48 25 4
gpt4 key购买 nike

我有一个带有以下 TextBlock 的 WPF ResourceDictionary:

<TextBlock Visibility="{Binding Converter={StaticResource MyBoolProp ResourceKey=BoolToVis}}">
</TextBlock>

ResourceDictionary 包含在 App.xaml 下的 MergedDictionaries 中:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyResourceDictionary.xaml"/>

在 App.xaml 中,我定义了 BoolToVis 转换器(再次,在 Application.Resources 下)
<BooleanToVisibilityConverter x:Key="BoolToVis" />

当我启动我的应用程序时 - 我收到以下 XamlParseException:

"Provide value on 'System.Windows.Markup.StaticResourceHolder' threw an exception."



内部异常是:

"Cannot find resource named 'BoolToVis'. Resource names are case sensitive."



我可以使用 App.xaml 直接引用这个转换器(实际上,特定的 XAML 声明是相同的),并且在其他 UserControl 中没有问题。

这段特殊的代码在 .NET 4.0 RC(和 Beta2)下也能正常工作。此错误仅在我升级到 .NET 4.0 RTM 时才开始发生。

我可以通过声明另一个 BooleanToVisibilityConverter 来解决它在 MyResourceDictionary.xaml 中并像这样引用它:
<TextBlock Visibility="{Binding Converter={StaticResource MyBoolProp ResourceKey=BoolToVis2}}">
</TextBlock>

为什么我需要这样做?

最佳答案

MSDN :

Resources in a merged dictionary occupy a location in the resource lookup scope that is just after the scope of the main resource dictionary they are merged into.



合并的 ResourceDictionary 无法看到 App.xaml 中定义的资源。我认为在 ResourceDictionary 本身中定义一个在 ResourceDictionary 中使用的转换器或另一个包含所有转换器的 ResourceDictionary 更有意义。

关于wpf - WPF ResourceDictionary 中 StaticResource 的范围是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2678893/

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