На самом деле это делается по-другому, если оно определено в XAML, а не в коде.Для проверки вы можете создать простой проект в WPF с одним окном и добавить пользовательский элемент управления с шаблоном ControlTemplate, определенным в XAML его стилем по умолчанию.Затем добавьте элемент управления в ваше окно и добавьте кнопку, в обработчик которой Click входит точка останова.
Когда достигается точка останова, мы можем проверить пользовательский элемент управления и его ControlTemplate.Свойство VisualTree (то есть FrameworkElementFactory) имеет значение null.
Используя Reflector, мы можем увидеть соответствующий код в методе StyleHelper.ApplyTemplateContent.Первый оператор if в этом методе применяет FrameworkElementFactory (который передается из VisualTreeProperty).Второй оператор if загружает ControlTemplate из XAML, который в конечном итоге выполняет FrameworkTEmplate.LoadOptimizedTemplateContent.