Ваше решение здесь состоит в том, чтобы использовать StyleSelector, который берет ContentPresenter и проверяет ContentTemplate.
internal class ContentTemplateStyleSelector : StyleSelector
{
public Style NullStyle { get; set; }
public Style DefaultStyle { get; set; }
public override Style SelectStyle(object item, DependencyObject container)
{
var cp = container as ContentPresenter;
if (cp == null)
return null;
if (cp.ContentTemplate == null)
return NullStyle;
return DefaultStyle;
}
}
К сожалению, ContentPresenter не имеет свойства StyleSelector, к которому можно привязать StaticResource экземпляравашего ContentTemplateStyleSelector, так что вам может потребоваться привести из ContentPresenter к чему-то, что делает.
В качестве альтернативы, есть вариант использования DataTemplateSelector.