Стилизация UserControl в WPF из другой сборки - PullRequest
3 голосов
/ 14 января 2010

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

WPFApplication Assembly

MyUserControl.xaml <- пользовательский элемент управления WPF </p>

Theme Assembly

MyStyles.xaml <- словарь ресурсов WPF </p>

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 14 января 2010

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

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

...