IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

GroupBox ForgroundColor et XP


Sujet :

Windows Presentation Foundation

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 255
    Points : 445
    Points
    445
    Par défaut GroupBox ForgroundColor et XP
    Bonjour,

    La ForgroundColor d'un GroupBox n'est pas la même sous seven-vista et sous XP. Quand elle est définie sur blanc elle devient bleue sous XP.
    Idem à ceci:
    http://connect.microsoft.com/VisualS...-in-windows-xp

    Y-a-t-il une solution ?

    Salutations!

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Malheureusement la couleur est codée en dur dans le template... une solution simple est de reprendre le style par défaut et de changer la brush :


    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
        <SolidColorBrush x:Key="GroupBoxBorderBrush" 
                         Color="#D0D0BF"/>
     
        <!-- La brush utilisée pour le texte de l'en-tête, mets la couleur que tu veux... -->
        <SolidColorBrush x:Key="GroupBoxHeaderBrush" 
                         Color="#0046D5"/>
     
     
        <BorderGapMaskConverter x:Key="BorderGapMaskConverter"/>
        <Style x:Key="{x:Type GroupBox}"
               TargetType="{x:Type GroupBox}">
            <Setter Property="BorderBrush"
                    Value="{StaticResource GroupBoxBorderBrush}"/>
            <Setter Property="BorderThickness"
                    Value="1"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type GroupBox}">
                        <Grid SnapsToDevicePixels="true">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="6"/>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="6"/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="*"/>
                                <RowDefinition Height="6"/>
                            </Grid.RowDefinitions>
                            <Border CornerRadius="4"
                                    Grid.Row="1"
                                    Grid.RowSpan="3"
                                    Grid.Column="0"
                                    Grid.ColumnSpan="4"
                                    BorderThickness="{TemplateBinding BorderThickness}"
                                    BorderBrush="Transparent"
                                    Background="{TemplateBinding Background}"/>
                            <Border x:Name="Header"
                                    Padding="3,0,3,0"
                                    Grid.Row="0"
                                    Grid.RowSpan="2"
                                    Grid.Column="1">
                                <ContentPresenter ContentSource="Header" 
                                                  RecognizesAccessKey="True" 
                                                  SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                                  TextElement.Foreground="{StaticResource GroupBoxHeaderBrush}"/>
                            </Border>
                            <ContentPresenter Grid.Row="2"
                                              Grid.Column="1"
                                              Grid.ColumnSpan="2"
                                              Margin="{TemplateBinding Padding}"
                                              SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                            <Border CornerRadius="4"
                                    Grid.Row="1"
                                    Grid.RowSpan="3"
                                    Grid.ColumnSpan="4"
                                    BorderThickness="{TemplateBinding BorderThickness}"
                                    BorderBrush="{TemplateBinding BorderBrush}">
                                <Border.OpacityMask>
                                    <MultiBinding Converter="{StaticResource BorderGapMaskConverter}"
                                                  ConverterParameter="7">
                                        <Binding ElementName="Header"
                                                 Path="ActualWidth"/>
                                        <Binding RelativeSource="{RelativeSource Self}"
                                                 Path="ActualWidth"/>
                                        <Binding RelativeSource="{RelativeSource Self}"
                                                 Path="ActualHeight"/>
                                    </MultiBinding>
                                </Border.OpacityMask>
                            </Border>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    Autre option, qui nécessite encore de modifier le template : dans le ContentPresenter de l'en-tête, tu remplaces {StaticResource GroupBoxHeaderBrush} par {TemplateBinding Foreground}, pour que ça utilise la couleur de Foreground affectée au contrôle.

    Enfin, dernière option, forcer l'utilisation du thème Aero... mais si tu es sous XP, l'apparence de l'application ne collera plus avec le thème de l'OS

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 255
    Points : 445
    Points
    445
    Par défaut
    tomlev,

    Ok, je vais essayer la première solution.
    Merci pour ta réponse rapide,précise et détaillée.

    Salutations.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 255
    Points : 445
    Points
    445
    Par défaut
    tomlev,

    Ça fonctionne parfaitement !
    J'ai juste remplacé ceci:
    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        <SolidColorBrush x:Key="GroupBoxHeaderBrush" 
                         Color="#0046D5"/>

    par ceci:

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            <LinearGradientBrush x:Key="GroupBoxHeaderBrush"  EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
                <GradientStop Color="White" Offset="0.406"/>
                <GradientStop Color="#FF111111" Offset="1"/>
                <GradientStop Color="#FF363030" Offset="0.973"/>
            </LinearGradientBrush>

    pour l'effet de dégradé que je souhaitais.
    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MFC] Colorier le fond d'un GroupBox ???
    Par youb dans le forum MFC
    Réponses: 2
    Dernier message: 27/06/2005, 22h06
  2. Pb de ScrollBar avec un GroupBox
    Par Olivekiki dans le forum C++Builder
    Réponses: 3
    Dernier message: 03/05/2005, 18h42
  3. [C#][WinForm] ScrollBar appliquée a un GroupBox ?
    Par Phenomenium dans le forum Windows Forms
    Réponses: 7
    Dernier message: 22/04/2005, 14h13
  4. [C#] Petits groupbox dans grand groupbox ...
    Par cdurand dans le forum Windows Forms
    Réponses: 6
    Dernier message: 18/03/2005, 10h06
  5. [VB.NET] Controles dans un GroupBox
    Par Poussera dans le forum Windows Forms
    Réponses: 11
    Dernier message: 15/10/2004, 12h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo