Стилизация пользовательского элемента управления в WPF из другой сборки

StackOverflow https://stackoverflow.com/questions/2063954

Вопрос

У меня есть пользовательский элемент управления WPF, определенный в сборке приложения.Я пытаюсь стилизовать пользовательский элемент управления на основе стилей в другой сборке (скин или тема).Я не хочу, чтобы сборка темы / обложки, которая содержит resourcedictionary со всеми стилями, ссылалась на сборку приложения.Есть ли какой-нибудь способ сделать это?Например.

Сборка приложения WPF

MyUserControl.xaml <- Пользовательский контроль WPF

Тематическая Сборка

MyStyles.xaml <- Словарь ресурсов WPF

Я предполагаю, что могу использовать

<Style x:Key="MyStyle">
    <Setter Property="Background" Value="Red" />
</Style>

в ресурсном справочнике MyStyles.xaml и используйте:

<l:MyUserControl Name="control" Style="{StaticResource MyStyle}" />

в любом окне, которое использует MyUserControl.xaml в сборке WPFApplication

Однако я бы предпочел настроить таргетинг на пользовательский элемент управления в MyStyles.xaml resourcedictionary:

<Style TargetType="{x:Type l:MyUserControl}" x:Key="MyStyle">
        <Setter Property="Background" Value="Red" />
    </Style>

Возможно ли это??

Это было полезно?

Решение

Да, вы можете это сделать. Проверьте этот пост SO где я показываю, как это сделать программно.Я делал это с ControlTemplates, но то же самое относится и к стилям.

Чтобы сделать это декларативно, может быть проще, вам, возможно, придется программно объединить ваши resourcedictionaries, объявить правильные StaticResources и пространства имен в вашем xaml, а затем просто сослаться на нужный стиль / шаблон.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top