2008-09-23 26 views
21

Quiero que mi aplicación WPF se pueda personalizar, al aplicar una determinada plantilla XAML, y los cambios que se apliquen a toda la aplicación, incluso para controles dinámicos o controles que ni siquiera están en el árbol visual/lógico.¿Cuál es la forma recomendada de proteger una aplicación completa en WPF?

¿Qué puedo usar para lograr este tipo de funcionalidad? ¿Hay algún buen recurso o tutorial que muestre cómo se puede hacer esta tarea específica?

Respuesta

10

El enfoque básico es utilizar los recursos en toda la aplicación y reemplazar dinámicamente los recursos en tiempo de ejecución.

Ver http://www.nablasoft.com/alkampfer/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/ para el enfoque básico

+0

Hola Maurice, estos dos enlaces ahora son 404. ¿Alguna posibilidad de encontrar algunos reemplazos? – Matt

+0

@Matt https://web.archive.org/web/20130411050848/http://www.codewrecks.com/blog/index.php/2008/05/22/simple-skinnable-and-theme-management-in -wpf-user-interface – Xcodo

4

La sustitución de los recursos va a funcionar, pero me pareció "desollado estructural" a ser más potente! Lea más sobre esto en CodeProject ...

http://www.codeproject.com/KB/WPF/podder1.aspx

+0

Una vieja pregunta y respuesta pero, a menos que esté equivocado, parece que el método aludido en esa página también se basa (al menos en parte) en la referencia de recursos dinámicos. –

2

he encontrado la manera de aplicar las plantillas genéricas a todos los controles sin necesidad de utilizar llaves plantilla. La solución es usar el tipo de control como la tecla de Estilo.

Ejemplo:

<Application.Resources> 
    <Style x:Key="{x:Type Button}" TargetType="{x:Type Button}"> 
     <Setter Property="Button.Background" Value="CornflowerBlue"/> 
     <Setter Property="Button.Template"> 
      <Setter.Value> 
       <ControlTemplate x:Name="MyTemplate"> 
        ... 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Application.Resources> 

aquí la clave estilo es x: Key = "{x: Tipo de botón}", así que el estilo se aplicará a todos los controles de botón de tipo sin el control de declarar la propiedad Style ser un recurso estático o dinámico.

+4

Si no especifica una clave x: en absoluto, TargetType se usa automáticamente como clave. ¡SECO! (¡También me encanta CornflowerBlue!) –

+2

Además, algunos bits y piezas extraños tienen claves incorporadas que solo debes conocer. Por ejemplo, los separadores en los menús. http://devlicious.com/blogs/christopher_bennage/archive/2008/06/19/styling-separators-in-wpf.aspx –

Cuestiones relacionadas