2011-07-07 7 views
6

Duplicar posible:
How to set the default font for a wpf application?Situación de la familia de fuentes global

Viniendo de un fondo de desarrollo web a menudo me confundo sobre cómo asignar estilos a mis controles. Lo que me gustaría hacer es establecer una familia de fuentes global para la aplicación completa.

En mi archivo App.xaml Tengo el siguiente

<Style TargetType="{x:Type Window}"> 
     <Setter Property="FontFamily" Value="Helvetica, Arial" /> 
     <Setter Property="FontSize" Value="13" /> 
    </Style> 

He intentado cambiar el tipo de destino en Control pero eso no hace nada. Esperaría que ya que todo técnicamente vive en un control Window que todo funcionaría como se esperaba.

Resulta que el control TextBlock no hereda de Control. Supongo que es la mayor parte del problema porque el 90% de mi texto está en el formulario TextBlock.

En CSS que haría algo como esto:

body { 
    font-family: Helvetica, Arial; 
    font-size: 13px; 
    } 

Respuesta

12

Lo que he hecho anteriormente es crear un estilo de control, a continuación, se derivan otros estilos de control de la misma. Por alguna razón, WPF no quiere tomar una configuración de FontFamily directamente desde un estilo de Control, pero si lo toma desde un Estilo de Botón que está basado en Control, entonces funciona. Si recibo algún tiempo más tarde, buscaré y encontraré una implementación previa de esto.

Editar:
no podía recordar dónde podría haber puesto un ejemplo ya hecha, así que hice uno:

<Style x:Key="ControlStyle" TargetType="Control"> 
    <Setter Property="FontFamily" Value="Wingdings"/> 
</Style> 
<Style TargetType="Button" BasedOn="{StaticResource ControlStyle}"/> 

Además, tenga en mente, un estilo para TextBlock no puede basarse en un control. Textblock se deriva del elemento Framework, no Control. La etiqueta, la casilla de verificación, el cuadro de texto, etc. derivan del control que se deriva del elemento del marco.

Es probable que tenga que tener un estilo separado para Textblock. Una cosa que puede hacer es establecer un recurso de familia de fuentes y vincular sus estilos de nivel superior a eso. Entonces, si cambia, todo lo que tienes que hacer es cambiar esa instancia.

<FontFamily x:Key="DefaultFont" >Ravie</FontFamily> 

<Setter Property="FontFamily" Value="{DynamicResource DefaultFont}"/> 
Cuestiones relacionadas