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 :

Problèmes avec les styles


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Homme Profil pro
    Automatisme, robotique et info indus
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Automatisme, robotique et info indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Points : 15
    Points
    15
    Par défaut Problèmes avec les styles
    Bonjour à tous.

    Je suis entrain de développer une petite application WPF, pour laquelle je souhaite harmoniser les styles graphiques.
    Je souhaite entre autre supprimer les effets de style lorsque la souris passe sur un contrôle.

    Dans mon appli, j'ai donc créé un "ResourceDictionary" et j'y ai défini mes styles.

    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
    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
     
        <!--Textbox-->
        <Style x:Key="TextBoxStyle" TargetType="{x:Type TextBox}">
            <Setter Property="BorderBrush" Value="Gray"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Style.Triggers>
                <Trigger Property="TextBox.IsFocused" Value="False">
                    <Setter Property="BorderBrush" Value="Gray"/>
                    <Setter Property="BorderThickness" Value="1"/>
                </Trigger>
                <Trigger Property="TextBox.IsMouseOver" Value="True">
                    <Setter Property="BorderBrush" Value="Gray"/>
                    <Setter Property="BorderThickness" Value="1"/>
                </Trigger>
            </Style.Triggers>
        </Style>
     
        <Style x:Key="PasswordBoxStyle" TargetType="{x:Type PasswordBox}">
            <Setter Property="BorderBrush" Value="Red"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Style.Triggers>
                <Trigger Property="IsFocused" Value="True">
                    <Setter Property="BorderBrush" Value="Gray"/>
                    <Setter Property="BorderThickness" Value="1"/>
                </Trigger>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="BorderBrush" Value="Gray"/>
                    <Setter Property="BorderThickness" Value="1"/>
                </Trigger>
            </Style.Triggers>
        </Style>
     
    </ResourceDictionary>

    Dans ma fenêtre principale, j'ai le code suivant:

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            <Grid.Resources>
                <ResourceDictionary Source="Resources/Styles.xaml"/>
            </Grid.Resources>

    puis j'applique le style de la façon suivante:

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            <TextBox IsEnabled="{Binding IsChecked, ElementName=_lockParameterMenuItem, Converter={StaticResource Negate}}"
                     Style="{StaticResource TextBoxStyle}"
                     Grid.Row="4" Grid.Column="3"> 
                <TextBox.Text>
                    <Binding ElementName="AccountSettings" XPath="Player/@Name" Mode="TwoWay"/>
                </TextBox.Text>
            </TextBox>

    Le style de base est bien appliqué à ma TextBox, SAUF pour les triggers. Celui-ci n'est pas pris en compte lorsque ma Textbox a le focus ou que la souris passe dessus.

    Ai je omis quelque chose?

    Merci.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Automatisme, robotique et info indus
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Automatisme, robotique et info indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    J'ai toujours mon soucis avec les triggers de style.
    J'ai essayé diverses choses trouvées ici où là sur le net, mais sans résoudre mon problème.

    Personne n'a été confronté à ce problème?

  3. #3
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Salut,

    Fait attention quand tu override un style il est de bon usage de partir sur une copie généré par visual studio, pour cela tu fait click droit sur ton composant dans le designer =w edit a template => edit a copy.

    Quand tu ne passe pas par une copie il arrive que tu es des comportement "bizarre".

  4. #4
    Membre à l'essai
    Homme Profil pro
    Automatisme, robotique et info indus
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Automatisme, robotique et info indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par worm83 Voir le message
    Salut,

    Fait attention quand tu override un style il est de bon usage de partir sur une copie généré par visual studio, pour cela tu fait click droit sur ton composant dans le designer =w edit a template => edit a copy.

    Quand tu ne passe pas par une copie il arrive que tu es des comportement "bizarre".
    Merci, je vais testé çà dans la soirée et vous tiendrai au courant.

  5. #5
    Membre actif
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 176
    Points : 297
    Points
    297
    Par défaut
    Bonjour,

    Je pense que ton problème vient du fait que tu spécifie TextBox dans tes Triggers.
    Supprime les et ça devrait mieux fonctionner.

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    <Trigger Property="IsFocused" Value="False">

    Bonne continuation.

  6. #6
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Citation Envoyé par Kyroon Voir le message
    Bonjour,

    Je pense que ton problème vient du fait que tu spécifie TextBox dans tes Triggers.
    Supprime les et ça devrait mieux fonctionner.

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    <Trigger Property="IsFocused" Value="False">

    Bonne continuation.
    Oui bien vu.

    Mais ma remarque précédente reste valable.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Automatisme, robotique et info indus
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Automatisme, robotique et info indus
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Points : 15
    Points
    15
    Par défaut
    Bonsoir,

    J'ai appliqué les conseils de worm83, et cela a fonctionné.

    Citation Envoyé par worm83 Voir le message
    Salut,

    Fait attention quand tu override un style il est de bon usage de partir sur une copie généré par visual studio, pour cela tu fait click droit sur ton composant dans le designer =w edit a template => edit a copy.

    Quand tu ne passe pas par une copie il arrive que tu es des comportement "bizarre".
    Je me retrouve donc avec ce code dans les ressources de l'application.

    Code : 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
            <Style x:Key="TextBoxCustom" BasedOn="{x:Null}" TargetType="{x:Type TextBox}">
                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
                <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
                <Setter Property="BorderBrush" Value="Gray"/>
                <Setter Property="BorderThickness" Value="1"/>
                <Setter Property="Padding" Value="1"/>
                <Setter Property="AllowDrop" Value="true"/>
                <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type TextBox}">
                            <Themes:ListBoxChrome x:Name="Bd" BorderBrush="Gray" BorderThickness="1" RenderMouseOver="False" RenderFocused="False" SnapsToDevicePixels="true">
                                <ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                            </Themes:ListBoxChrome>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsEnabled" Value="false">
                                    <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                                    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
    J'ai mis à False les valeurs de "RenderMouseOver" et "RenderFocused", et j’obtiens l'effet désiré. Désormais, j'ai une bordure qui ne change plus de couleur quand le contrôle à le focus ou que la souris passe dessus.

    Un grand merci à tous.

    Cdt.

    Ikes

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

Discussions similaires

  1. Problèmes avec les styles wpf c#
    Par cocobelle89 dans le forum C#
    Réponses: 8
    Dernier message: 30/04/2013, 16h23
  2. Problème avec les feuilles de style
    Par toumaille dans le forum JavaFX
    Réponses: 6
    Dernier message: 12/09/2009, 02h10
  3. Réponses: 0
    Dernier message: 29/10/2008, 12h32
  4. [itext] Problème avec les styles
    Par jgavard dans le forum Documents
    Réponses: 3
    Dernier message: 17/03/2008, 14h17
  5. Problème avec les styles d'un tableau
    Par psychoBob dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 20/05/2006, 03h13

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