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] Petits problèmes de style


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Points : 83
    Points
    83
    Par défaut [WPF] Petits problèmes de style
    Bonjour à tous,

    Je voudrais savoir s'il est possible de sortir les triggers d'un controltemplate ; je m'explique. Dans un premier temps j'ai ceci

    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
     
    <Style x:Key="MyStyle1" TargetType="{x:Type MonControl}">
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="{x:Type MonControl}">
            <Path Stoke="3" x:Key="MonPath">
               ...
            </Path
            <ControlTemplate.Triggers>
               <Trigger Property="Affiche" Value="False">
                 <Setter TargetName="MonPath" Property="Visible" Value="Hidden"/>
               </Trigger>
            </ControlTemplate.Triggers>
        </Setter.Value>
      </Setter>
    </Style>
    Le code ici est assez simple, en fonction de la propriété Affiche de MonControl, le Path MonPath est affiché ou non.

    Et maintenant je voudrais sortir la partie Trigger dans un style à part et l'appliquer à MonPath, Bref un truc du genre :

    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
     
    <Style x:Key="MonStyleAnimation">
      <Style.Triggers>
        <DataTrigger Binding="{Binding Affiche}" Value="False"> 
          <Setter Property="Path.Visibility" Value="Hidden"/>
        </DataTrigger>
      </Style.Triggers>
    </Style>
     
    <Style x:Key="MyStyle1" TargetType="{x:Type MonControl}">
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="{x:Type MonControl}">
            <Path Stoke="3" x:Key="MonPath" Style="{StaticResource MonStyleAnimation}">
               ...
            </Path>
          </ControlTemplate>
        </Setter.Value>
      </Setter
    </Style>
    Je dois dire que cela fait pas mal de temps que je planche dessus.
    Quelqu'un aurait-il une idéee ?

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Essaye de faire "hériter" ton 2ème style du premier, avec le BasedOn

  3. #3
    Membre régulier Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Points : 83
    Points
    83
    Par défaut
    Ce n'est pas trop la philosophie de ce que je voudrais parvenir à faire :
    En fait on peut très bien imaginer que la représentation graphique de MonControl soit composée de plusieurs objets tous associés à un style particulier. D'ailleurs puisque le but est de sortir l'animation j'ai déjà un peu réduit le code de représentation de MonObjet à un simple ControlTemplate comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <ControlTemplate TargetType="{x:Type MonControl}" x:Key="MyTemplate1">
      <Canvas>
        <Path x:Key="MonPath" Style="{StaticResource MonStyleAnimation}">
           ...
        </Path
      </Canvas>
    </ControlTemplate>
    En fait après analyse un peu plus poussée j'ai fait ceci pour la définition du style MonStyleAnimation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <Style x:Key="MonStyleAnimation">
      <Setter Property="Path.Stroke" Value="Red"/>
      <Setter Property="Path.StrokeThickness" Value="3"/>
      <Style.Triggers>
        <DataTrigger Binding="{Binding Affiche}" Value="False"> 
          <Setter Property="Path.Visibility" Value="Hidden"/>
        </DataTrigger>
      </Style.Triggers>
    </Style>
    Les propriétés en Vert sont correctement appliquées, donc le style est bien appliqué au Path.
    A mon avis le seul problème réside dans le binding que je fais sur le DataTrigger. Il doit encore y avoir une syntaxe "magique" que je ne connais pas

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Il faudrait un exemple que je puisse reproduire pour pouvoir t'aider car là, je ne vois pas trop.....

  5. #5
    Membre régulier Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Points : 83
    Points
    83
    Par défaut
    Je vais te préparer ça.

    Merci de ton aide...

  6. #6
    Membre régulier Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Points : 83
    Points
    83
    Par défaut
    Et voilà. Tu trouveras en commentaire dans le fichier Style1.xaml ce à quoi j'essaye d'arriver.

    Merci pour tout.
    Fichiers attachés Fichiers attachés

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    OK, j'ai trouvé ton problème.

    Dans ton Style1.xaml, remplace:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <DataTrigger Binding="{Binding Affiche}" Value="False"> 
          <Setter Property="Path.Visibility" Value="Hidden"/>
        </DataTrigger>
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <DataTrigger Binding="{Binding Path=Propriete1, RelativeSource={RelativeSource AncestorType={x:Type local:CustomControl1}}}" Value="False"> 
          <Setter Property="Path.Visibility" Value="Hidden"/>
        </DataTrigger>

    Et pareil pour ton autre propriété et le tour est joué

  8. #8
    Membre régulier Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Points : 83
    Points
    83
    Par défaut
    Merci beaucoup, je vais essayer ça tout de suite... mais j'ai super confiance.
    Franchement je crois que j'aurais jamais pu trouver ça tout seul.

    La question qui se pose est la suivante :
    Mais où vas-tu chercher tout ça ????

  9. #9
    Membre régulier Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Points : 83
    Points
    83
    Par défaut
    J'avais bien raison d'avoir Super confiance
    Merci

    Je profite de l'occasion pour demander s'il ne semblerait pas intéressant d'ouvrir un Forum spécial WPF car si la technologie est assez récente je sens que de nombreuses questions vont arriver rapidement de toutes parts...

  10. #10
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par despeludo Voir le message
    Mais où vas-tu chercher tout ça ????
    J'ai pas mal bosser sur les contrôles WPF en me faisant une librairie perso


    Je profite de l'occasion pour demander s'il ne semblerait pas intéressant d'ouvrir un Forum spécial WPF car si la technologie est assez récente je sens que de nombreuses questions vont arriver rapidement de toutes parts...
    Moi, je suis d'accord mais bon, je ne suis pas le seul à décider

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

Discussions similaires

  1. WPF et MEF : Petits problèmes
    Par briantyo dans le forum Développement Windows
    Réponses: 1
    Dernier message: 10/04/2012, 15h56
  2. WPF : Problème de style
    Par Philenain dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 08/12/2009, 12h52
  3. [WPF] Problème de style
    Par JuTs dans le forum Framework .NET
    Réponses: 11
    Dernier message: 25/11/2007, 00h26
  4. petit problème premier plan, arrière plan
    Par gros bob dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/04/2004, 12h00
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 18h55

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