2010-04-15 16 views
8

Ho creato un'applicazione WPF in Visual Studio 2010 Express (C#) e aggiunto il testo seguente a Application.Resources in App.xaml. Vedo lo stile applicato alla finestra nella finestra di progettazione, ma quando eseguo l'applicazione, lo sfondo della finestra è bianco.Stile finestra WPF non funzionante in fase di esecuzione

in esecuzione in Windows XP su BootCamp su un MacBook Pro se questo è un fattore.

Grazie in anticipo,

cristiane

<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> 

risposta

10

Microsoft hanno replicato il problema e sembra che potrebbe essere un bug in WPF 4.0.

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

Dopo la ricerca fatta dalla persona che ha inviato il bug, ho preso tutti i nostri file di risorse individuali XAML che sono inclusi nel dizionario risorse risultante dalla fusione e tagliare e incollare il testo stile in un unico UberStyles. file xaml. Ho evitato l'uso di MergedDictionaries.

Questo ha risolto il problema e le informazioni sullo stile della mia applicazione WPF 3.5 sono tornate contro la mia applicazione WPF 4.0.

Ai miei occhi questo è un bug chiaro in WPF 4.0 - Non sono esattamente sicuro di come lo si interpreterà come una funzionalità e il comportamento non è documentato. Sono un po 'preoccupato delle implicazioni di questo per la piattaforma WPF 4.0 nel suo complesso. Avresti pensato che questo sarebbe stato catturato nei test della versione di Visual Studio 2010!

In ogni caso, spero che questo aiuti. Sono stato impazzito da questo bug da quando abbiamo aggiornato a VS2010 due settimane fa.

0

Ci siamo imbattuti in quanto segue:

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

La risposta è che uno stile, non verrà applicato a tipi derivati.

+1

Non sono sicuro che questa sia la risposta. Vedi il mio post qui sotto ... sembra che sia in realtà un bug. – JasonD

0

Ho lo stesso problema. Abbiamo sviluppato una libreria con stili personalizzati per ogni controllo standart, funziona bene con .net 3.5 sia a degnatore che a runtime. Oggi abbiamo deciso di passare i nostri progetti a .net4 (wpf 4 ha molte nuove gustose caratteristiche). Dopo che in fase di esecuzione tutti gli stili come questo non funziona in fase di esecuzione, ma applicando al design:

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

stili con impostato x: Key funzionare bene. Ma abbiamo bisogno di impostare lo stile di default per un tema, non di impostarlo per ogni controllo.

+0

Si stanno utilizzando i controlli standard o si sottoclasse dai controlli standard? Se erediti da loro, la mia risposta qui di seguito ti darà un'idea. Altrimenti non sono sicuro perché non so cosa sia coinvolto nell'aggiornamento delle applicazioni WPF da 3,5 a 4. –

Problemi correlati