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 WrapPanel dans un ItemsControl


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 29
    Points : 24
    Points
    24
    Par défaut [WPF] Problème de WrapPanel dans un ItemsControl
    Bonjour,

    Je cherche à gérer le wrapping de contrôles qui se trouvent dans le "repeater" de WPF, l'ItemsControl.

    J'ai réussi à modifier le comportement original du ItemsControl pour utiliser un WrapPanel à l'intérieur:

    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
     
    <ItemsControl Grid.Row="2" ItemsSource="{Binding Stops}" FontSize="4">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <WrapPanel>
                    <TextBlock Text="{Binding NameFrench}" />
                    <TextBlock Text=" / " />
                    <TextBlock Text="{Binding NameDutch}" />
                    <TextBlock FontWeight="Bold" Text="{Binding ArrivalTime, Converter={StaticResource dateTimeConverter}}"/>
                    <TextBlock Text=" - " />
                </WrapPanel>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
        <ItemsControl.Template>
            <ControlTemplate>
                <WrapPanel Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" FlowDirection="LeftToRight" IsItemsHost="True" />
            </ControlTemplate>
        </ItemsControl.Template>
    </ItemsControl>
    L'arbre WPF généré derrière doit donc ressembler à quelque chose comme ceci:

    • WrapPanel

      • WrapPanel

        • TextBlock
        • ...



      • WrapPanel

        • TextBlock
        • ...




    Dans ce cas, le wrapping est fait sur chaque item. (Si un item est trop grand, il passe à la ligne)

    J'aurais besoin d'obtenir ceci à la place:

    • WrapPanel
      • TextBlock
      • ...
      • TextBlock
      • ...


    En fait j'ai besoin que le wrapping se fasse sur chaque textblock et non pas sur chaque item (regroupement de TextBlock).

    Je veux donc que le wrapping puisse se faire entre deux textblocks d'un même item. En gros, qu'il puisse être coupé en deux s'il est trop long et qu'un morceau passe à la ligne.

    Evidemment, il n'y a pas moyen de définir l'ItemTemplate sans container ... Grid, WrapPanel, StackPanel ou n'importe quoi d'autre. Je me retrouve donc toujours dans le premier cas de figure (WrapPanel dans WrapPanel).

    Je ne suis pas sur d'être sur la bonne voie.
    Y a t'il moyen de s'en sortir d'une facon ou d'une autre ?

    Merci d'avance.

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Je vais p-e dire une betise mais... pourquoi tu ne prend pas un Treeview ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Je crois que je me suis mal exprimé.
    Je ne cherche pas à créer quelque chose qui ressemble à un arbre.

    Quand je parle d'arbre WPF, je pense à l'arbre des objets WPF en mémoire, pas à ce qui est affiché.

    Ce que je cherche à avoir c'est ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    -------------------------------------------
    |jqsdhjksd / dsqjdjq 1:23 - jqsdhjksd      |               
    | / dsqjdjq 1:23 - jqsdhjksd / dsqjdjq 1:23|
    | -  jqsdhjksd / dsqjdjq 1:23 -            |
    -------------------------------------------
    au lieu de ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    -------------------------------------------
    |jqsdhjksd / dsqjdjq 1:23 -               |
    |jqsdhjksd / dsqjdjq 1:23 -               |
    |jqsdhjksd / dsqjdjq 1:23 -               |
    |jqsdhjksd / dsqjdjq 1:23 -               |
    -------------------------------------------
    où la boîte est un ItemsControl et où un item est : jqsdhjksd / dsqjdjq 1:23 -

    Mon problème est que le wrap ne se fait qu'au bout de l'item parce que j'ai un WrapPanel de trop dans mon "arbre WPF".

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    As-tu essayé de mettre la propriété TextWrapping des TextBlock à "Wrap" ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Oui j'ai essayé. Ca ne marche pas mieux.

    Je pense que c'est impossible en utilisant le ItemsControl.

    Finalement j'ai résolu mon problème en créant mes contrôles dans le code behind. Ca n'est pas le plus propre mais je n'ai pas vraiment le temps de chercher.

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

Discussions similaires

  1. [WPF] Gestion du parent logique d'un item dans un ItemsControl
    Par Taenad dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 15/12/2017, 01h02
  2. C# \ WPF : Problème de ratio dans un canvas.
    Par Julien Board dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 17/12/2010, 21h14
  3. Réponses: 0
    Dernier message: 30/06/2009, 21h41
  4. [WPF] Probléme de binding dans un UserControl :(
    Par UNi[FR] dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 17/07/2008, 15h51
  5. [WPF] Problème de menu dans fenetre transparente
    Par Zucher dans le forum Framework .NET
    Réponses: 3
    Dernier message: 30/01/2008, 22h28

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