2010-04-15 1 views
8

Creé una aplicación WPF en Visual Studio 2010 Express (C#) y agregué el texto a continuación a Application.Resources en App.xaml. Veo el estilo aplicado a la ventana en el diseñador, pero cuando ejecuto la aplicación, el fondo de la ventana es blanco.WPF Window Style no funciona en el tiempo de ejecución

Correr en Windows XP en BootCamp en una MacBook Pro si ese es un factor.

Gracias de antemano,

cristianos

<Style TargetType="{x:Type Window}"> 
     <Setter Property="Background"> 
      <Setter.Value> 
       <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
        <GradientStop Offset="0" Color="WhiteSmoke" /> 
        <GradientStop Offset="1" Color="Silver" /> 
       </LinearGradientBrush> 
      </Setter.Value> 
     </Setter> 

     <Setter Property="Padding" Value="20" /> 
    </Style> 

Respuesta

10

Microsoft ha replicado el problema y parece que podría ser un error en WPF 4.0.

https://connect.microsoft.com/VisualStudio/feedback/details/555322/global-wpf-styles-are-not-shown-when-using-2-levels-of-references

Tras la investigación realizada por la persona que remite el fallo, que tomó todos nuestros archivos de recursos XAML individuales que se incluyen en el diccionario de recursos fusionada y cortar y pegar el texto de estilo en un único UberStyles. archivo xaml Evité todo uso de MergedDictionaries.

Esto resolvió el problema y mi información de estilo de mi aplicación WPF 3.5 volvió contra mi aplicación WPF 4.0.

En mi opinión, este es un error evidente en WPF 4.0. No estoy muy seguro de cómo lo incluirías como característica y el comportamiento no está documentado. Estoy un poco preocupado por las implicaciones de esto para la plataforma WPF 4.0 como un todo. ¡Pensarías que esto hubiera quedado atrapado en las pruebas de la versión de Visual Studio 2010!

De todos modos, espero que esto ayude. Me he vuelto loco por este error desde que nos actualizamos a VS2010 hace dos semanas.

0

Me encontré con lo siguiente:

How to set default WPF Window Style in app.xaml?

La respuesta es que un estilo no se aplicará a los tipos derivados.

+1

No estoy seguro de que esta sea la respuesta. Ver mi publicación a continuación ... parece que en realidad es un error. – JasonD

0

Tengo el mismo problema. Desarrollamos una biblioteca con estilos personalizados para cada control estándar, funciona bien en .net 3.5 tanto en deigner como en tiempo de ejecución. Hoy decidimos cambiar nuestros proyectos a .net4 (wpf 4 tiene muchas nuevas características sabrosas). Después de que en tiempo de ejecución todos los estilos de este tipo no trabaja en tiempo de ejecución, pero la aplicación de al diseñador:

<Style TargetType={x:Type Button}> 
     <Setter Property="FontSize" Value="14"/> 
</Style> 

estilos con enchufar x: Key fina de trabajo. Pero tenemos que establecer el estilo predeterminado para un tema, no establecerlo para cada control.

+0

¿Está utilizando los controles estándar o subclase de los controles estándar? Si heredas de ellos, mi respuesta a continuación te dará una idea. De lo contrario, no estoy seguro ya que no sé lo que implica la actualización de las aplicaciones WPF de 3.5 a 4. –

Cuestiones relacionadas