Я был в состоянии отладить некоторые проблемы разработчика управления путем выполнения второго экземпляра VS, затем из первого VS, экземпляр делает "Отладку-> Присоединение к Процессу" и выбирает "devenv".
первый экземпляр VS - то, где Вы установите свои точки останова. Используйте второй экземпляр для загрузки разработчика, чтобы заставить код "разработчика" работать.
Вы можете попробовать воспользоваться логикой поиска ресурсов. Когда WPF пытается найти ресурс по ключу, он сначала просматривает текущий элемент ResourceDictionary
, затем его родительский элемент, затем его родительский элемент и т. Д.
Итак, поскольку вы сказали, что это условно для пользователя, которое может быть объединено в ResourceDictionary
на уровне Window
, в то время как исходная база находится на уровне Application
.
Изменить: У меня информация получше. Из MSDN в объединенных словарях :
Поведение объединенного словаря
Ресурсы в объединенном словаре занимают место в области поиска ресурсов, которое находится сразу после области действия основного словаря ресурсов, в который они объединены. Хотя ключ ресурса должен быть уникальным в пределах любого отдельного словаря, ключ может существовать несколько раз в наборе объединенных словарей. В этом случае возвращаемый ресурс будет взят из последнего словаря, последовательно найденного в коллекции MergedDictionaries. Если коллекция MergedDictionaries была определена в XAML, то порядок объединенных словарей в коллекции соответствует порядку элементов, указанному в разметке. Если ключ определен в основном словаре, а также в словаре, который был объединен, то возвращаемый ресурс будет взят из основного словаря. Эти правила области действия одинаково применяются как для статических ссылок на ресурсы, так и для динамических ссылок на ресурсы.
Это означает, что вы можете определить свой базовый скин в другом ResourceDictionary
и объединить его с другим ResourceDictionary
. Поместите скин User в последний, и он найдет его первым, иначе он продолжит переход к объединенному словарю, который содержит Base. Каждый из ваших пользовательских словарей может объединять базовый словарь, и вы просто загружаете пользовательский словарь в приложение, а не оба по отдельности.
Вы можете просто назвать свою базу как BaseButtonBg, а если вы не объединяете пользовательский ResourceDictionary, объедините общий, содержащий:
<Style x:Key="ButtonBg" TargetType="{x:Type Button}" BasedOn="{StaticResource BaseButtonBg}"/>