次の 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 にアップグレードしたときにのみ発生し始めました。
BooleanToVisibilityConverter
MyResourceDictionary.xaml 内で別のものを宣言し、次のように参照することで回避できます。
<TextBlock Visibility="{Binding Converter={StaticResource MyBoolProp ResourceKey=BoolToVis2}}">
</TextBlock>
これを行う必要がある理由は何ですか?