Como hacer una aplicacion con temas usando WPF

Si quieres crear una serie de skins para usar con WPF es mucho más sencillo que en Windows Forms. Para ello debemos tener claro el concepto de recurso en WPF.

Un recurso es todo aquello que no es específico, por ejemplo, un botón puede ser un recurso, un color puede ser un recurso, una brocha puede ser un recurso, todo aquello que tu puedes reutilizar más tarde. Estos se guardarán en lo llamado ResourceDictionary, pero mejor vemos un ejemplo, vamos a crear un archivo llamado blue.xaml, con el siguiente contenido:

<ResourceDictionary 
      xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation 
      xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml>
      <Style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Navy" />
        <Setter Property="Foreground" Value="LightBlue" />
      </Style>
      <Style TargetType="{x:Type RadioButton}">
            <Setter Property="Foreground" Value="Navy" />
      </Style>
      <Style TargetType="{x:Type TextBox}">
            <Setter Property="Background" Value="LightBlue" />
            <Setter Property="Foreground" Value="Navy" />
      </Style>
</ResourceDictionary>

Una vez que ya tengamos nuestro diccionario, tenemos que ver como añadirlo a nuestro proyecto. Nosotros podemos crear tantos Diccionarios de recursos como queramos.

Para ello debemos ir a ver el App.xaml y vemos el siguiente tag:

<Application.Resources>
      <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                  <ResourceDictionary Source="blue.xaml" />
            </ResourceDictionary.MergedDictionaries>
      </ResourceDictionary>
</Application.Resources>

Bien, como véis podemos añadir a los MergedDictionaries el diccionario de recursos que queramos aplicar. Pero nosotros lo que queremos es poder cambiarlo, para ello debemos acceder a estos MergedDictionaries y para cambiarlo. Lo primero es crear un diccionario debemos hacerlo así:

ResourceDictionary blueTheme;
blueTheme = new ResourceDictionary();
blueTheme.Source = new Uri("blue.xaml", UriKind.Relative);

Después vamos a tener que acceder a dichos diccionarios y cambiarlo:

Application.Current.Resources.MergedDictionaries.Clear();
Application.Current.Resources.MergedDictionaries.Add(blueTheme);

Y con eso ya podemos cambiar el skin, si tenemos varios skins fácilmente podemos crear varios ResourceDictionary y podremos modificar los skins.

Es bastante sencillo.

http://eugenioestrada.es/blog

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *