Объект будет отображаться, но не так, как я думаю, вы надеетесь. The Content
из ContentPresenter
устанавливается на экземпляр A. WPF затем пытается выяснить, как отобразить этот экземпляр A. Сначала он спрашивает, является ли этот объект UIElement
? В этом случае ответ - нет. Затем он ищет DataTemplate
для типа. В этом случае нет DataTemplate
для класса А. Поэтому он возвращается к вызову ToString (). Таким образом, ваш ContentPresenter
отобразит TextBlock
, содержащий текст «YourNamespace.A».
Тот факт, что A имеет член типа ControlTemplate
, не влияет на эту логику. Для WPF это просто кусок данных, которые А несет в себе. Только для WPF использует ControlTemplate
, когда задействован элемент управления и ControlTemplate
назначено свойству Template
.
Таким образом, вам нужно либо предоставить DataTemplate
для A (который, конечно, может получить доступ к ControlTemplate
и использовать его для визуализации экземпляра), либо создать именованное DataTemplate
и применить его через ContentPresenter.ContentTemplate
, либо взамен UIElement
.