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 :

WPF : Problème de style


Sujet :

Windows Presentation Foundation

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut WPF : Problème de style
    Bonjour,

    Je viens vers vous car j’ai un petit souci sur un projet en WPF.

    Ma problématique est la suivante :
    J’ai un style appliqué sur plusieurs de mes contrôles (en fait un dégradé du fond de Transparent vers Blanc), jusque là aucuns soucis le style s’applique bien sur tout mes contrôles.

    Exemple de style utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <Setter Property="Label.Background">
                <Setter.Value>
                    <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
                        <LinearGradientBrush.GradientStops>
                            <GradientStop Color="Transparent" Offset="0.0" />
                            <GradientStop Color="LightGray" Offset="1" />
                        </LinearGradientBrush.GradientStops>
                    </LinearGradientBrush>
                </Setter.Value>
            </Setter>
    Là où cela se complique, c’est que je ne veux plus que le dégradé soit de Transparent vers Blanc, mais de transparent vers une couleur différente pour chaque contrôle.

    En gros, l’idée serait de faire un style qui définit UNIQUEMENT la façon dont va s’afficher le background et non pas ce qui s’affiche dans le background.

    Idéalement j’aurais souhaité avoir un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <MonControle BackGround= "Blue" Style="{StaticResource monStyleDegrade}" />
    Donc la grande question serait : est-ce qu’il existe un moyen de « paramétrer » un style ou un template ou faut-il le faire « à la main » via le code ?

    Merci.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Pour résoudre mon problème j’essais d’exploiter cette piste :

    Je me créé un contrôle qui hérite d’un Label :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class CLabelPerso : Label
        {
            public CLabelPerso()
                : base()
            {
                BackGroundColor = Brushes.Red;
            }
     
            public Brush BackGroundColor { get; set; }
        }
    Et j’essais maintenant de faire le syle correspondant à ce nouveau contrôle qui utiliserais sa propriété BackGroundColor pour déféinir sa couleur de fond.
    J’obtiens le style suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <ResourceDictionary 
    []
                        xmlns:local="clr-namespace:WpfSchema">
     
    <Style TargetType="{x:Type local:CLabelPerso}" x:Key="LabelDegradePerso">
    	<Setter Property="local:CLabelPerso.Background" Value="{Binding Path=local:CLabelPerso.BackGroundColor, RelativeSource={x:Static RelativeSource.Self}}">
            </Setter>
    </Style>
    Le style étant appliqué lors de la création dynamique de mes labels dans le code behind :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CLabelPerso lbl = new CLabelPerso();
    lbl.BackGroundColor = Brushes.Green;
    lbl.Style = (Style)FindResource("LabelDegradePerso");
     
    grid.Children.Add(lbl);
    Là mes labels s’affichent bien dans ma grid par contre leurs fonds restent désespérément transparents donc ma syntaxe du mapping de ma propriété doit être incorrecte ou une fois encore je suis à côté de la plaque.

Discussions similaires

  1. [WPF] Problème de style
    Par JuTs dans le forum Framework .NET
    Réponses: 11
    Dernier message: 25/11/2007, 00h26
  2. [WPF] Petits problèmes de style
    Par despeludo dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 06/10/2007, 00h22
  3. Problème de style avec firefox
    Par 12_darte_12 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/03/2006, 16h17
  4. [VB.NET] Problème tabpage + Style XP
    Par rikidi dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/08/2005, 16h01

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