Стиль элемента управления, привязанный к системе типов, может немного ввести в заблуждение. На самом деле это основано на значении свойства control DefaultStyleKey
. В случае Button
значение равно typeof(Button)
, а для TextBox
— typeof(Textbox)
.
Стиль по умолчанию будет применен к элементу управления, если значение TargetType
равно значению элемента управления DefaultStyleKey
. Нет исследования того, является ли Type
в DefaultStyleKey
производным от TargetType
.
Свойства, связанные со шрифтом, являются особым случаем, поскольку большинство элементов управления наследуют значения свойств шрифта из содержащего контекста. Следовательно, вы можете эффективно добиться того же результата, указав FontFamily
и FontWeight
в элементе 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 ... -->
24.11.2009