У меня есть библиотека WPF UserControls и ResourceDictionary, которые совместно используются в библиотеке.Ссылка на ресурс родителя в WordControl
Все UserControls в этой библиотеке отображаются только в пределах одного родительского элемента «shell», который на самом деле является только контейнером для коллекции меньших элементов управления. Я в состоянии получить доступ к ResourceDictionary из моего контроля оболочки, как и ожидалось, когда я добавить следующий код XAML
<Control.Resources>
<ResourceDictionary Source="MyResources.xaml" />
</Control.Resources>
Однако я не могу получить доступ к ResourceDictionary из дочерних элементов управления, которые сидят внутри контроля «оболочки».
У меня создалось впечатление, что WPF должен проверять локально ресурсы, а затем переходить вверх, пока не будут найдены соответствующие ресурсы?
Вместо этого я получаю
Cannot find resource named '{BoolInverterConverter}'.
Resource names are case sensitive. Error at
object 'System.Windows.Data.Binding' in markup file...
Очевидно, что я могу (и я), ссылающийся на ResourceDictionary в своих дочерних элементов управления; но каждый элемент управления теперь должен ссылаться на этот словарь, и я полагал, что это не обязательно.
Любые идеи, я делаю что-то странное, или мое ожидание неправильного поведения?
Спасибо за ваш ответ; к сожалению, это дает тот же результат «Не могу найти ресурс ...» в качестве моего исходного XAML. Я экспериментирую с использованием Keys, но не нахожу успеха. Какая часть ссылки на документацию описывает, что происходит - я ее прочитал, и, хотя она имеет отношение к ResourceDictionaries, я не видел ничего особенного в том, доступны ли ресурсы в иерархии элементов управления. –
В параграфе после введения, который начинается «Обратите внимание, что ResourceDictionary не имеет директивы x: Key ...». Вы пытаетесь получить ресурс с помощью расширения разметки «StaticResource»? Потому что это не сработает. 'DynamicResource' будет. –
Robert - Я смотрел на ваше решение - хотя использование DynamicResource работает - компилятор выдает ошибку времени компиляции, указывающую Resource - ресурс xxx не может быть разрешен. То же самое можно воспроизвести и с помощью вашего кода. Есть предположения? – Patrick