我有一个带有以下文本块的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:
“提供价值
'system.windows.markup.staticresourceholder'
引发了异常。“
InnerException是:
“找不到名为“booltovis”的资源。资源名区分大小写。“
我可以用app.xaml直接引用这个转换器(事实上,特定的xaml声明是相同的)并且在其他用户控件中没有问题。
在.net 4.0rc(和beta2)下,这个特殊的代码位也工作得很好。此错误仅在我升级到.NET 4.0 RTM时发生。
我可以通过声明另一个
BooleanToVisibilityConverter
在myresourcedictionary.xaml中,并按如下方式引用它:
<TextBlock Visibility="{Binding Converter={StaticResource MyBoolProp ResourceKey=BoolToVis2}}">
</TextBlock>
我为什么要这么做?