2010-08-25 13 views
17

¿Hay alguna forma de configurar estilos globales para mi aplicación WPF?WPF - ¿Estilo global?

Lo que espero hacer es aplicar un estilo a todos mis botones que también tengan un elemento secundario Image.

Respuesta

23

Bueno, más o menos - es un enfoque general que puedes hacer - coloca el siguiente elemento en tu App.xaml - todos los botones cambiarán (excepto aquellos a los que apliques un estilo, de forma manual).

<Style TargetType="{x:Type Button}"> 
    <Setter Property="Background" Value="LightPink"/> <!-- You should notice that one... --> 
</Style> 

Sin embargo, si usted desea golpear sólo botones con imágenes - que tiene que heredar de cada botón que hace y luego aplicar un estilo como este:

public class CustomImageButton:Button{} 
<Style TargetType="{x:Type local:CustomImageButton}"> 
    <Setter Property="Background" Value="LimeGreen"/> 
</Style> 
<local:CustomImageButton Content="ClickMe"/> 

Es un grano muy grueso estilo global, y debe seguir la convención para que funcione.

Una alternativa es usar Temas - leer más sobre eso here.

+2

Lamentablemente, el enlace a temas está muerto. [Aquí] (http://blogs.msdn.com/b/wpfsdk/archive/2007/07/31/using-themes-with-custom-controls.aspx) es un enlace a un artículo de MSDN sobre el uso de temas que puede ser similar. –

5

Puede hacerlo estilos implícitos en WPF que se aplican según el tipo

por ejemplo

<Style TargetType="Button"> 

se aplicará a todos los botones dentro del ámbito de ese estilo (Si el estilo está en la aplicación. XAML se aplicará a todos los botones, si está más abajo en la cadena se aplicará a todos los botones debajo de él)

Si desea aplicarlo solo a ciertos tipos de botones (digamos botones de imagen) cree un tipo que derive de botón (llámalo ImageButton) y luego crea como tyle dirigido a ese tipo.

+0

OK ... este tipo de obras. Uno de mis botones parece respetar este cambio, pero los otros no. Todos funcionan si doy al estilo una 'x: Key' y luego lo llamo explícitamente de cada botón usando' Style = "{StaticResource DisabledButton}" '. ¿De alguna manera puedo evitar tener que agregar una referencia explícita a cada botón? –

+0

Asegúrese de que el diccionario de recursos donde se define este estilo esté dentro del alcance de todos los botones a los que necesite aplicar el estilo. La colocación de este estilo en App.xaml será visible para todos los botones en la aplicación. Moverse más abajo restringirá su visibilidad. –

2

Ponga el estilo en una etiqueta ResourceDictionary dentro de su App.xaml y se aplicará a toda la aplicación.

Cuestiones relacionadas