Какова область действия StaticResource в WPF ResourceDictionary?
У меня есть 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:
Msgstr "Предоставить значение для '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>
Любая причина, почему я должен сделать это?