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 :

Relier des élements dans une listbox


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut Relier des élements dans une listbox
    Bonjour,

    J'ai une listbox qui présente des objets sous forme de points, et certains objets référencent un autre objet. Dans ce cas, j'aimerai qu'une ligne relie les deux points sur le graphique.
    Comme les positions des points peuvent évoluer, j'aimerai que ça me redessine la ligne tout seul.

    Quelqu'un aurait une idée pour faire ça ?

    Initialement, j'avais une solution en surchargeant le OnRender, mais dès que je met un Background au canvas ou à la liste, les traits ne sont plus dessinés (ils doivent être 'sous' le background).

    Ensuite, je pensais faire un DataTemplate un peu sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        <Grid>
            <Ellipse ... />
            <Line X1=0 Y1=0>
              <Line.X2>
              <Binding Path=RefItem.Position.X />
              </Line.X2> 
              <Line.Y2>
              <Binding Path=RefItem.Position.Y />
              </Line.Y2> 
            </Line>
        </Grid>
    mais la Line serait alors positionnée par rapport à la grid du DataTemplate. Y'a-t-il un moyen de lui dire de se placer par rapport à l'ItemPresenter de la ListBox ?

    j'ai mis un petit projet d'exemple. (Le projet est simplissime au possible, je n'ai pas implémenté INotifyPropertyChanged, c'est pas ça la question ! )
    Je voudrais que le point jaune soit relié au point rouge.

    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    tu as regarde les article de sacha barber sur codeprojet
    http://www.codeproject.com/KB/WPF/WP...ner_Part1.aspx

    regarde les 4 partie
    a mon avis ca va te donner des idees mieux que la listbox lol

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par ikeas Voir le message
    tu as regarde les article de sacha barber sur codeprojet
    http://www.codeproject.com/KB/WPF/WP...ner_Part1.aspx

    regarde les 4 partie
    a mon avis ca va te donner des idees mieux que la listbox lol
    Je confirme, cette série d'article est vraiment pas mal

  4. #4
    Membre éprouvé Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    Euh, oui, merci, la série à l'air interressante, en effet, j'ai survolé un peu la troisième partie de son "Diagram Designer", qui parle des connectors, ça m'obligerait à ajouter des éléments à ma collection pour représenter les connexions. C'est faisable, mais il y a peut-être plus simple pour mon besoin. (en fait, dans mon projet réel, l'ItemSource de la ListBox est déjà une CompositeCollection, alors gérer encore une collection en plus dans cette CompositeCollection juste pour afficher les connecteurs, ça devient un peu lourd.)

    En fait, j'ai des points et des labels associés à ces points, et j'aimerai que les labels soient reliés aux points par une ligne droite toute bidon.

    La ListBox est pratique en cela que c'est un ItemsControl, et donc, ça gère déjà plein de trucs dont j'ai besoin, la selection, un ItemSource, les ItemsTemplateSelector,... Je pourrais sans doute même utiliser directement un ItemsControl, d'ailleur, mais certainement pas un Canvas tout seul comme dans son article.

    Est-ce que c'est le bon lien que tu m'as envoyé, tu me parles de sacha barber, mais la série d'articles est signé sukram ?

  5. #5
    Membre éprouvé Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    Bon, je m'en suis sorti en créant un nouveau DataTemplate qui contient deux ContentPresenter et une Line. J'applique le DataTemplate du point principal à un des deux ContentPresenter, et le DataTemplate du label correspondant au point au deuxième ContentPresenter.
    Et ça marche plutôt pas mal.

    Merci

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    fait voir ce que ca donne
    et met un peu de code des fois ca pourrait servir lol

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

Discussions similaires

  1. Inserer des icones dans une listBox
    Par e040098k dans le forum VBA Access
    Réponses: 5
    Dernier message: 15/05/2007, 12h39
  2. Comment faire apparaitre des données dans une listbox
    Par nuans dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 14/05/2007, 15h04
  3. pb pour alignées des entrées dans une listbox
    Par zx10 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/11/2006, 19h30
  4. Réponses: 3
    Dernier message: 29/08/2006, 12h50
  5. Attribuer des valeurs dans une ListBox
    Par OjBarbare dans le forum MFC
    Réponses: 5
    Dernier message: 06/12/2005, 11h28

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