На мой взгляд, это приемлемый подход. Причина в том, что я не видел лучшего метода.
В моих собственных случаях я загружал словари ресурсов во время выполнения , используя код, который я описал здесь , который, как я предполагаю, будет работать и для загрузки ресурсов из других сборок. Недостатком является то, что дизайнер не будет запускать этот код первым, то есть стиль по умолчанию не применяется, что вы испытываете.
Чтобы противодействовать этому, я добавил определение <ResourceDictionary.MergedDictionaries>
по умолчанию в каждый из моих <Window.Resources>
, которые мне нужно было редактировать во время разработки. Хотя это оказывается немного избыточным, это позволило мне иметь рабочее Окно времени разработки, в то время как правильный MergedDictionary можно загрузить позже во время выполнения. Возможно, вы можете использовать это, чтобы найти лучший метод.