Вы можете использовать прикрепленное поведение для объединения словаря ресурсов со всеми ресурсами окна / страницы / usercontrol, например:
<Page my:Skinlibrary.Attach="True">
<!-- stuff goes here -->
</Page>
Вы можете настроить присоединенное поведение так, чтобы всегда объединять один и тот же экземпляр словаря ресурсов с ресурсами вложенного элемента. Для этого вам нужно только один раз инициализировать словарь ресурсов, возможно, в статическом ctor.
Предполагая, что у вас есть готовые ресурсы в переменной с именем _staticResourceDictionaryThatHoldsMySkin, а затем в обратном вызове PropertyChanged присоединенного свойства, вы можете сделать это, чтобы объединить его с присоединенными окнами:
static void OnAttachChanged(DependencyProperty sender, DependencyPropertyChangedEventArgs e)
{
(sender as FrameworkElement).Resources.MergedDictionaries.Add(_staticResourceDictionaryThatHoldsMySkinResources);
}
Это позволит вам изменить скин во время компиляции, просто изменив файл SkinLibrary. Вы также можете загрузить словарь ресурсов, предварительно проверив файл конфигурации.
По моему опыту, оболочка будет правильно отображаться в дизайнерах Visual Studio как в 2008, так и в 2010 году.