2009-10-03 5 views
9

Comment lier la couleur d'arrière-plan de la fenêtre par défaut du thème à un arrière-plan de fenêtre?Comment lier l'arrière-plan de la fenêtre à la couleur d'arrière-plan de la fenêtre d'un thème?

J'ai essayé ce qui suit:

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

Mais la couleur de fond rend en noir et qui ne semble pas juste en utilisant le thème Luna. En utilisant le thème Luna je m'attendrais à la couleur beige/brunâtre souvent trouvée dans Windows XP.

MISE À JOUR: Après avoir lu vos réponses, jouer avec StyleSnooper et de penser un peu plus sur ce que je suis venu à la conclusion suivante: comme sa couleur de fond par défaut

La fenêtre utilisera SystemColors.WindowBrush. Cette couleur est blanche dans la plupart des thèmes que j'ai essayés et c'est probablement OK. Je crois que le blanc est aussi la couleur de fond de fenêtre dans WinForms. Toutefois, la couleur d'arrière-plan Form par défaut dans WinForms n'est pas l'arrière-plan de la fenêtre mais le contrôle. Donc, si je veux cette couleur, j'ai utilisé SystemColors.ControlBrush comme indiqué par Lucas. À un moment donné, j'essayais d'obtenir la couleur de contrôle brun/beige de WinForms sous Windows XP. Ce n'est probablement pas possible sur Windows Vista, car la couleur Control sur Vista est plutôt grise. L'exécution d'une application WinForms sous Windows Vista ne la rendra pas beige/brunâtre, mais grise. Dans ce cas, je suppose que nous devons appliquer nos propres styles personnalisés pour obtenir l'aspect "original" de Windows XP sur Vista.

Merci à tous pour m'avoir aidé à résoudre ce problème!

+0

Avez-vous résolu ce problème? Je voudrais changer l'arrière-plan sur un déclencheur. – nportelli

+0

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

Répondre

4

L'application d'un thème remplace-t-elle réellement les pinceaux du système, comme je m'y attendais? Si oui, vous devriez être en mesure de le faire:

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

Modifier

Selon le commentaire de Manga, vous voudrez probablement utiliser SystemColors.ControlBrush pour obtenir l'effet désiré, car la plupart WindowBrush les systèmes sont blancs. ControlBrush est la couleur "blanc cassé" que vous voyez sur Windows XP.

+1

je reçois le blanc en arrière-plan de ceci, mais suivant cette suggestion, vous pourriez essayer 'SystemColors.ControlBrush',' SystemColors.ControlDarkBrush', etc – Lucas

+0

+1 pour m'indiquer dans la bonne direction.Je voudrais cependant accepter une réponse où le SystemColors.ControlBrush est appliqué à l'arrière-plan comme suggère Lucas. À vos marques... –

1

J'aurais pensé que laisser simplement la propriété Background sur votre élément Window permettrait d'atteindre cet objectif. Tout le point d'un thème est qu'il affecte l'aspect par défaut des éléments visuels tels que votre Window.

EDIT Vous pouvez regarder StyleSnooper - il vous permettra d'afficher le modèle par défaut pour un contrôle (tel que Window). Vous devriez être capable de déterminer à quelle propriété il est lié pour chaque thème.

+0

L'application du thème Luna et l'abandon de la propriété Background de ma fenêtre ne me donne pas un fond blanc. Je m'attendais à un fond beige/brun comme vous obtiendriez dans WinForms sur Windows XP ou un fond grisâtre comme vous obtenez dans WinForms sur Vista. Si le fond blanc est le bon comportement, je devrais peut-être reformuler ma question. –

+0

+1 pour me faire penser différemment à ce sujet et me diriger vers StyleSnooper! –

Questions connexes