【发布时间】:2011-02-10 08:32:42
【问题描述】:
我有一个带有以下 TextBlock 的 WPF ResourceDictionary:
<TextBlock Visibility="{Binding Converter={StaticResource MyBoolProp ResourceKey=BoolToVis}}">
</TextBlock>
ResourceDictionary 包含在 MergedDictionaries 下的 App.xaml 中:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyResourceDictionary.xaml"/>
在 App.xaml 中,我定义了 BoolToVis 转换器(同样,在 Application.Resources 下)
<BooleanToVisibilityConverter x:Key="BoolToVis" />
当我启动我的应用程序时 - 我收到以下 XamlParseException:
"提供价值 'System.Windows.Markup.StaticResourceHolder' 抛出异常。”
InnerException 是:
“找不到名为 'BoolToVis' 的资源。资源名称区分大小写。”
我可以直接用 App.xaml 引用这个转换器(事实上,特定的 XAML 声明是相同的)和其他 UserControls 中没有问题。
这段特殊的代码在 .NET 4.0 RC(和 Beta2)下也能正常工作。此错误仅在我升级到 .NET 4.0 RTM 时才开始发生。
我可以通过在 MyResourceDictionary.xaml 中声明另一个 BooleanToVisibilityConverter 并像这样引用它来解决它:
<TextBlock Visibility="{Binding Converter={StaticResource MyBoolProp ResourceKey=BoolToVis2}}">
</TextBlock>
我为什么需要这样做?
【问题讨论】:
标签: wpf .net-4.0 resourcedictionary