与类型系统相关联的控件样式可能有点误导。它实际上基于控件DefaultStyleKey
属性的值。在 a 的情况下,Button
值是typeof(Button)
,对于 a TextBox
,它是typeof(Textbox)
。
TargetType
如果值等于控件值,则默认样式将应用于控件DefaultStyleKey
。没有检查Type
in是否DefaultStyleKey
是 的导数TargetType
。
与字体相关的属性是一种特殊情况,因为大多数控件将从包含的上下文中继承字体属性的值。因此,您可以通过在 UserControl 元素上指定FontFamily
和来有效地获得相同的结果。FontWeight
编辑
来自 OP 的评论:-
我希望我可以将它设置在一个地方,并让整个应用程序中的每个 UserControl 都采用这种风格。
最接近的方法是在应用程序资源中放置一个键控样式,并确保所有用户控件都绑定到该样式。当然,这仍然需要每个用户控件的一些合作,但至少字体选择保留在一个地方。
例如在 app.xaml 中:-
<Style x:Key="Common" TargetType="UserControl">
<Setter Property="FontFamily" Value="Arial" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="Blue" />
然后在每个用户控件中: -
<UserControl ...namespace stuff here...
Style="{StaticResource Common}">
<!-- ... content here ... -->