Расширение/переопределение стиля в словаре ресурса

Я был в состоянии отладить некоторые проблемы разработчика управления путем выполнения второго экземпляра VS, затем из первого VS, экземпляр делает "Отладку-> Присоединение к Процессу" и выбирает "devenv".

первый экземпляр VS - то, где Вы установите свои точки останова. Используйте второй экземпляр для загрузки разработчика, чтобы заставить код "разработчика" работать.

7
задан Brandon 30 July 2009 в 20:25
поделиться

2 ответа

Вы можете попробовать воспользоваться логикой поиска ресурсов. Когда WPF пытается найти ресурс по ключу, он сначала просматривает текущий элемент ResourceDictionary , затем его родительский элемент, затем его родительский элемент и т. Д.

Итак, поскольку вы сказали, что это условно для пользователя, которое может быть объединено в ResourceDictionary на уровне Window , в то время как исходная база находится на уровне Application .

Изменить: У меня информация получше. Из MSDN в объединенных словарях :

Поведение объединенного словаря

Ресурсы в объединенном словаре занимают место в области поиска ресурсов, которое находится сразу после области действия основного словаря ресурсов, в который они объединены. Хотя ключ ресурса должен быть уникальным в пределах любого отдельного словаря, ключ может существовать несколько раз в наборе объединенных словарей. В этом случае возвращаемый ресурс будет взят из последнего словаря, последовательно найденного в коллекции MergedDictionaries. Если коллекция MergedDictionaries была определена в XAML, то порядок объединенных словарей в коллекции соответствует порядку элементов, указанному в разметке. Если ключ определен в основном словаре, а также в словаре, который был объединен, то возвращаемый ресурс будет взят из основного словаря. Эти правила области действия одинаково применяются как для статических ссылок на ресурсы, так и для динамических ссылок на ресурсы.

Это означает, что вы можете определить свой базовый скин в другом ResourceDictionary и объединить его с другим ResourceDictionary . Поместите скин User в последний, и он найдет его первым, иначе он продолжит переход к объединенному словарю, который содержит Base. Каждый из ваших пользовательских словарей может объединять базовый словарь, и вы просто загружаете пользовательский словарь в приложение, а не оба по отдельности.

10
ответ дан 7 December 2019 в 01:24
поделиться

Вы можете просто назвать свою базу как BaseButtonBg, а если вы не объединяете пользовательский ResourceDictionary, объедините общий, содержащий:

<Style x:Key="ButtonBg" TargetType="{x:Type Button}" BasedOn="{StaticResource BaseButtonBg}"/>
0
ответ дан 7 December 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: