Partage
  • Partager sur Facebook
  • Partager sur Twitter

[WPF] Définir Padding.Left/Bottom dans un Setter

Propriété d'une propriété

Sujet résolu
Anonyme
    4 mars 2012 à 19:13:15

    Bonsoir.

    Dans un Style WPF, je souhaite appliquer du padding à gauche si une condition est satisfaite, du padding en bas si une autre condition est satisfaite, et combiner ces deux paddings si les deux conditions sont satisfaites.

    Pour cela, il faudrait faire quelque chose comme <Setter Property="Padding.Left" Value="4" />.
    Malheureusement, c'est impossible ("Padding" est compris comme un nom de type et "Left" comme une propriété).
    J'ai également essayé "Control.Padding.Left" mais ça ne marche pas non plus.

    Il est évident que ce que je veux faire peut être fait avec deux Triggers et un MultiTrigger, mais...n'y a-t-il pas un moyen simple de définir une propriété de propriété via un Setter ?

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      4 mars 2012 à 22:03:41

      Tu peux écrire ceci :

      <Setter Property="Padding">
        <Setter.Value>
          <Thickness Left="50" />
        </Setter.Value>
      </Setter>
      

      Mais ça n'a pas énormément d'intérêt et ce n'est pas cumulable avec d'autres Setters. Une Thickness étant une structure, tu ne peux pas modifier une de ses composantes - c'est un peu comme en WinForms, on ne peut pas modifier la composante X ou Y de la Location d'un contrôle : il faut remplacer la valeur de la propriété Location.

      Perso je ferais plutôt un Converter, ou au pire deux rectangles transparents collapsés par défaut que tu passes en Visible si le padding s'applique :-°
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        4 mars 2012 à 22:09:53

        OK, merci pour l'explication.
        Je crois que je vais rester avec mes trois triggers, ça me semble plus clean. ^^
        • Partager sur Facebook
        • Partager sur Twitter

        [WPF] Définir Padding.Left/Bottom dans un Setter

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown