Style content via setters v ContentTemplate
Your Content
property is set to a DataTemplate
DataTemplates
are meant to be used with Template
properties, and not directly inserted into the VisualTree via the Content
property
Change your Style Setter to set the ContentTemplate
instead of Content
and it should work fine
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="a" FontFamily="Wingdings 3" FontWeight="Bold" FontSize="18" Foreground="Navy" />
</DataTemplate>
</Setter.Value>
</Setter>
As for your second question, I prefer the first because its simpler, and I think it may contain fewer elements in the Visual Tree (I'd have to double-check that)