我有一个 WPF ResourceDictionary,其中包含以下 TextBlock:
<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:
"在'System.Windows.Markup.StaticResourceHolder'上提供值时引发了异常。"
内部异常是:
"找不到名为“BoolToVis”的资源。资源名称区分大小写。"
我可以直接在App.xaml中引用此转换器(实际上,特定的XAML声明是相同的),并且在其他UserControl中使用也没有问题。
在.NET 4.0 RC(和Beta2)下,这段代码也能正常工作。只有当我升级到.NET 4.0 RTM后才开始出现此错误。
我可以通过在MyResourceDictionary.xaml中声明另一个BooleanToVisibilityConverter
并像这样引用它来解决这个问题:
<TextBlock Visibility="{Binding Converter={StaticResource MyBoolProp ResourceKey=BoolToVis2}}">
</TextBlock>
我需要这样做的原因是什么?