Pregunta

Quiero que se pueda personalizar mi aplicación WPF, aplicando una determinada plantilla XAML, y que los cambios sean para toda la aplicación, incluso para controles dinámicos o controles que ni siquiera están en el árbol visual/lógico.

¿Qué puedo usar para lograr este tipo de funcionalidad?¿Existen buenos recursos o tutoriales que muestren cómo se puede realizar esta tarea específica?

¿Fue útil?

Solución

El enfoque básico a seguir es utilizar recursos en toda la aplicación y reemplazarlos dinámicamente 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

Otros consejos

La sustitución del recurso funcionará, pero descubrí que el "desollado estructural" es más potente.Lea más sobre esto en CodeProject...

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

Encontré la manera de aplicar plantillas genéricas a todos los controles sin usar claves de plantilla.La solución es utilizar el tipo de control como 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 de estilo es x:Key="{x:Type Button}", por lo que el estilo se aplicará a todos los controles de tipo botón sin que el control declare que la propiedad Style es un recurso estático o dinámico.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top