2009-10-03 10 views
9

Come è possibile associare il colore di sfondo della finestra predefinito del tema a uno sfondo della finestra?Come associare lo sfondo della finestra al colore di sfondo della finestra di un tema?

ho provato la seguente:

<Window x:Class="Shell" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Shell" 
    Height="300" 
    Width="300" 
    Background="{DynamicResource WindowBackgroundBrush}" 
    > 

Ma il colore di sfondo rende in bianco e che non mi sembra giusto quando si utilizza il tema Luna. Usando il tema Luna mi aspetterei che il colore beige/marrone si trovi spesso in Windows XP.

UPDATE: Dopo aver letto le tue risposte, giocando con StyleSnooper e pensare un po 'di più su questo sono giunto alla seguente conclusione:

La Finestra userà SystemColors.WindowBrush come il suo colore di sfondo di default. Questo colore è bianco nella maggior parte dei temi che ho provato e probabilmente è OK. Credo che il bianco sia anche il colore di sfondo della finestra in WinForms. Tuttavia, il colore di sfondo del modulo predefinito in WinForms non è lo sfondo della finestra ma il controllo. Quindi, se voglio quel colore, ho usato SystemColors.ControlBrush come indicato da Lucas.

A un certo punto, stavo cercando di ottenere il colore di controllo marrone/beige di WinForms su Windows XP. Questo probabilmente non è possibile su Windows Vista poiché Control color su Vista è un po 'grigio. L'esecuzione di un'applicazione WinForms su Windows Vista non lo renderà come beige/marrone, ma grigio. In questo caso, suppongo che dobbiamo applicare i nostri stili personalizzati per ottenere l'aspetto "originale" di Windows XP su Vista.

Grazie a tutti per avermi aiutato a risolvere questo problema!

+0

Hai risolto questo? Mi piacerebbe cambiare lo sfondo di un trigger. – nportelli

+0

Questo: http://stackoverflow.com/a/1955583/492 –

risposta

4

L'applicazione di un tema sovrascrive effettivamente i pennelli di sistema come mi aspetterei? Se è così, si dovrebbe essere in grado di fare questo:

<Window ... 
    Background="{x:Static SystemColors.WindowBrush} 
    ...> 

Modifica

Come per il commento di Manga, probabilmente si vorrà utilizzare SystemColors.ControlBrush per ottenere l'effetto desiderato, perché WindowBrush sulla maggior parte i sistemi sono bianchi. ControlBrush è il colore "bianco sporco" che stai vedendo su Windows XP.

+1

ottengo brackground bianco da questo, ma seguendo questo suggerimento, si potrebbe provare 'SystemColors.ControlBrush',' SystemColors.ControlDarkBrush', ecc – Lucas

+0

+1 per avermi indicato nella giusta direzione.Vorrei tuttavia accettare una risposta in cui SystemColors.ControlBrush viene applicato allo Sfondo come suggerito da Lucas. Sui tuoi segni ... –

1

Avrei pensato che lasciare la proprietà Background disinserita sull'elemento Window avrebbe raggiunto questo obiettivo. Il punto principale di un tema è che influisce sull'aspetto predefinito di elementi visivi come il tuo Window.

MODIFICA È possibile cercare StyleSnooper - consente di visualizzare il modello predefinito per un controllo (come Finestra). Dovresti essere in grado di determinare quale proprietà è vincolante per ogni tema.

+0

Applicare il tema Luna e lasciare la proprietà Background della mia finestra non impostata mi dà uno sfondo bianco. Mi sarei aspettato uno sfondo beige/marrone come si otterrebbe in WinForms su Windows XP o in uno sfondo grigio quando si entra in WinForms su Vista. Se lo sfondo bianco è il comportamento corretto, forse ho bisogno di riformulare la mia domanda. –

+0

+1 per avermi fatto riflettere in modo diverso su questo e indicandomi StyleSnooper! –