Производное управление с использованием базового класса Style без XAML - PullRequest
0 голосов
/ 11 января 2012

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

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

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 февраля 2012

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

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

if(s != null)
{
    Style derivedStyle = new Style(derivedObj.GetType(), s);
    derivedObj.Style = derivedStyle;
}
0 голосов
/ 12 января 2012

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

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

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

...