Lo stile di controllo collegato al sistema di tipi può essere un po 'fuorviante. In realtà si basa sul valore della proprietà control DefaultStyleKey
. Nel caso di un Button
il valore è typeof(Button)
e per un TextBox
è typeof(Textbox)
.
Uno stile predefinito verrà applicato a un controllo se il valore TargetType
corrisponde al valore di DefaultStyleKey
di controlli. Non viene esaminato se il numero Type
nel numero DefaultStyleKey
sia un derivato di TargetType
.
Le proprietà relative ai font sono un caso speciale poiché la maggior parte dei controlli erediterà i valori per le proprietà Font dal contesto di contenimento. Quindi è possibile ottenere efficacemente lo stesso risultato specificando FontFamily
e FontWeight
sull'elemento UserControl.
Modifica
Da un commento di OP: -
speravo che avrei potuto metterlo in un posto e avere ogni UserControl nella intera applicazione assumere quello stile.
Il più vicino che si può ottenere è quello di inserire uno stile con chiave nelle risorse dell'app e assicurarsi che tutti gli usercontrols si leghino a quello stile. Naturalmente ciò richiede ancora una certa cooperazione per ogni controllo dell'utente, ma almeno le scelte dei caratteri rimangono in un unico posto.
Per esempio in app.xaml: -
<Style x:Key="Common" TargetType="UserControl">
<Setter Property="FontFamily" Value="Arial" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="Blue" />
Poi in ogni UserControl: -
<UserControl ...namespace stuff here...
Style="{StaticResource Common}">
<!-- ... content here ... -->
Grazie, questo ha un senso. Anche se speravo di poterlo impostare in un unico punto e che ogni UserControl dell'intera applicazione assumesse quello stile. Credo che potrei creare un UserControl personalizzato per basare gli altri su, comunque. –