Производное управление с использованием базового класса 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 для стилизации вашего пользовательского элемента управления.
- Что нужно помнить при использовании generic.xaml:
- Ресурс должен называться generic.xaml и находиться в папке под названием Themes(случай имеет значение)
- AssemblyInfo.cs нуждается в атрибуте ThemeInfo
- [assembly: ThemeInfo(ResourceDictionaryLocation.SourceAssembly, ResourceDictionaryLocation.SourceAssembly)]
Эта тема будет использоваться по умолчанию всякий раз, когда кто-либо использовал ее.