Есть несколько способов сделать это:
[Примечание: ради этого ответа я предполагаю, что вы создаете кнопку в простом окне.]
1) Не допускающий многократного использования и грязный способ - назначить все свойства в загруженном событии окна. Называя объект кнопки, вы можете получить ссылку на него и присвоить значения свойствам, зарегистрироваться на событие и назначить шаблон. Я предполагаю, что у вас были проблемы со свойствами шаблона. Чтобы создать шаблон в коде, вы можете либо использовать FrameworkElementFactory class (что устарело), либо использовать метод XamlReader.Load (это предпочтительный подход).
2) Создайте пользовательский элемент управления, для которого в файле generic.xaml создается пользовательский шаблон. Вы можете называть элементы в пользовательском шаблоне и получать ссылки на них, переопределяя метод OnApplyTemplate. Затем вы можете создать общедоступные свойства, которые напрямую отображаются на элемент Image в шаблоне, или выставить элемент Image в качестве публичного свойства в элементе управления. Используя этот подход, вы можете установить свойства в коде C #, используя ваши открытые свойства.
3) Вы также можете определить несколько стилей и переключаться между ними в коде c #. Этот метод работает так же, как в HTML, когда мы переключаем классы с помощью JavaScript.
Надеюсь, это поможет!