Estoy escribiendo una aplicación de WPF en WinXP y he anulado el tema por defecto con el tema Vista de esta manera:Anulación alteradas temporalmente WPF temático
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var themerd = new ResourceDictionary();
themerd.Source = new Uri(@"PresentationFramework.Aero;V3.0.0.0;31bf3856ad364e35;component\themes/aero.normalcolor.xaml", UriKind.Relative);
Resources.MergedDictionaries.Add(themerd);
}
y funciona bien en su mayoría. Cuando utilizo el control como un botón:
<Button />
El estilo se ve muy bien, pero si uso un botón con un estilo diferente de esta manera:
<Button>
<Button.Style>
<Style TargetType="Button">
<Setter Property="Width" Value="80" />
</Style>
</Button.Style>
</Button>
El estilo anulará el estilo del tema especificado con el estilo estándar de WinXP en lugar de construir sobre él. Esto es extremadamente limitante para mí. ¿Hay alguna forma de evitar este problema?
Gracias, tu respuesta fue realmente útil. Esta área parece faltar en WPF. ¿Qué opción usas normalmente para resolver este problema? –
La opción 2 es muy buena, hasta cierto punto incluso soluciona el problema de no estar en BasedOn DynamicResources. –
Normalmente resuelvo el problema explicando al cliente que es mejor seguir con el tema actual del sistema operativo porque las ventanas se verán "normales" para el usuario final. Sin embargo, he utilizado tanto la Opción 2 como la Opción 3 en situaciones en las que necesito una sección de la IU para rediseñar, pero una sección interna de la IU (como una ventana emergente) para * no * volver a ser rediseñada. –