Вот
тут определены две кнопки —
IconButton и
TabButton как расширение стандартного класса
Button. Так же у них
определены свои собственные одноимённые стили. И далее в коде используются обе эти кнопки, при этом у них есть как общий базовый стиль, так и добавленные свойства типа
иконки или
заголовка вкладки, которые и используются в XAML разметке. При этом, т.к. они имеют общего предка, можно легко добавить стиль для класса
Button и поменять базовый стиль сразу для всех наследников, не затрагивая дополнительные стили самих наследников.
Пример элементов, когда некоторая часть стилей и их поведение задаётся в коде:
GridTable — решение проблем размеров и позиционирования контента в табличном представлении на базе простой
Grid (очень, очень рекомендую для замены
DataGrid, т.к. там очень плохо с адекватным размещением и позиционированием контента);
ComboBoxEx — исправление размеров контента в соответствии с самим элементом.