c# - usar - donde nacio wpf
¿Cuál es la forma recomendada de proteger una aplicación completa en WPF? (3)
Quiero que mi aplicación WPF se pueda personalizar mediante la aplicación de una determinada plantilla XAML y que los cambios 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.
¿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?
¡El reemplazo del recurso funcionará pero encontré que el "desvanecimiento estructural" es más poderoso! Lea más sobre esto en CodeProject ...
El enfoque básico a seguir es usar recursos a través de su aplicación y reemplazar dinámicamente los recursos en tiempo de ejecución.
Consulte http://www.nablasoft.com/alkampfer/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/ para obtener el enfoque básico.
He encontrado la manera de aplicar plantillas genéricas a todos los controles sin usar claves de 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 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.