Я не уверен, правильно ли я понимаю ваш вопрос (или даже если у вас все еще есть эта проблема), поэтому я говорю вам о своем подходе, я думаю, что мне нужно что-то подобное:
- У меня есть свои темы во внешних сборках (каждая тема представлена в виде
словарь ресурсов), который можно изменить путем обмена словарями ресурсов класса во время выполнения
- Ключи к ресурсам хранятся в другой сборке
- Доступ к темам и ресурсам снова в другой сборке
Сначала убедитесь, что у вас есть все необходимые ссылки во всех необходимых проектах.
Класс, в котором хранятся ключи:
public class CoreResourceKeys
{
public static readonly string BrushMyBrush = "MyBrush";
public static ComponentResourceKey Brush_MyBrush
{
get
{
return new ComponentResourceKey(typeof(CoreResourceKeys), CoreResourceKeys.BrushMyBrush);
}
}
}
Мои файлы тем выглядели примерно так:
<ResourceDictionary xmlns=[...]
xmlns:resources="clr-namespace:AssemblyThatStoresTheKeys;assembly=CoreResourceKeys">
<SolidColorBrush x:Key="{ComponentResourceKey
TypeInTargetAssembly={x:Type resources:CoreResourceKeys},
ResourceId={x:Static resources:CoreResourceKeys.BrushMyBrush}}"
Color="DarkMagenta"/>
</ResourceDictionary>
И элемент управления / страница, где бы я ни хотел использовать кисть, выглядел так:
<UserControl x:Class=[...]
xmlns:resources="clr-namespace:AssemblyThatStoresTheKeys;assembly=CoreResourceKeys">
<TextBlock Background="{DynamicResource {x:Static resources:CoreResourceKeys.Brush_MyBrush}}" Text="The Shire"/>
этот пост мне очень помог: Форум поддержки MSDN - загрузка стилей из моей сборки
Я не уверен, поможет ли это вам. Если нет, попробуйте описать вашу проблему более подробно.