The control styling being tied to the type system can be a bit misleading. Its actually based on the value of the controls DefaultStyleKey
property. In the case of a Button
the value is typeof(Button)
and for a TextBox
it is typeof(Textbox)
.
A default style will be applied to a control if the TargetType
value equals the controls DefaultStyleKey
value. There is no examination of whether the Type
in the DefaultStyleKey
is a derivative of the TargetType
.
Font related properties are a special case since most controls will inherit the values for Font properties from the containing context. Hence you can effectively acheive the same result by specifying FontFamily
and FontWeight
on the UserControl element.
Edit
From a comment by the OP:-
I was hoping that I could set it in one place and have every UserControl in the entire application take on that style.
The closest you can get to that is to place a keyed style in the app resources and ensure all the usercontrols bind to that style. Of course this still requires some co-operation for each user control but at least the font choices remain in a single place.
For example in app.xaml:-
<Style x:Key="Common" TargetType="UserControl">
<Setter Property="FontFamily" Value="Arial" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="Blue" />
Then in each usercontrol:-
<UserControl ...namespace stuff here...
Style="{StaticResource Common}">
<!-- ... content here ... -->