Производное управление с использованием базового класса Style без XAML

Я делаю некоторые классы-обертки, которые инкапсулируют детали настройки этих элементов управления базового класса, но я бы хотел, чтобы они использовали стиль этого базового класса. Я могу добиться этого с помощью следующего xaml:

<Style TargetType="{x:Type bc:DerviedClass}" BasedOn="{StaticResource {x:Type etk:BaseClass}}"/>

Я бы предпочел не использовать xaml, чтобы клиентский программист не добавлял эту строку в свой код xaml. Есть ли способ сделать это в C#?

Спасибо

2 ответа

Я нашел решение этого:

Style s = (Style)derivedObj.FindResource(baseType);

if(s != null)
{
    Style derivedStyle = new Style(derivedObj.GetType(), s);
    derivedObj.Style = derivedStyle;
}

Вы должны рассмотреть Styling/Themeing с использованием файла Themes/generic.xaml для стилизации вашего пользовательского элемента управления.

  1. Что нужно помнить при использовании generic.xaml:
    • Ресурс должен называться generic.xaml и находиться в папке под названием Themes(случай имеет значение)
    • AssemblyInfo.cs нуждается в атрибуте ThemeInfo
      • [assembly: ThemeInfo(ResourceDictionaryLocation.SourceAssembly, ResourceDictionaryLocation.SourceAssembly)]

Эта тема будет использоваться по умолчанию всякий раз, когда кто-либо использовал ее.

Другие вопросы по тегам