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 :

Evènement sur un UIElement, impact sur un menu


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 43
    Points : 53
    Points
    53
    Par défaut Evènement sur un UIElement, impact sur un menu
    Bonjour à tous,

    je programme actuellement une petite appli permettant de définir des diagrammes. L'utilisateur dispose d'une toolbox avec différents composants (des lignes, des rectangles, ...) qu'il peut disposer à loisir sur un Canvas pour composer son diagramme.

    Pour lui permettre de modifier les propriétés de certains éléments qu'il a placé, il dispose d'un outil "sélectionner" lui permettant (ô magie) de sélectionner le composant désiré, faisant apparaitre certains éléments dans la barre de menu/toolbar/etc... qui permettent la modification des propriétés adéquates (en fonction du type de composant sélectionné).

    Ma question est simple : comment faire cela proprement ?

    En l'état actuel, pour chaque élément graphique, j'ai une classe avec une référence de type UIElement et les fonctions d'évènement qui sont mappées dessus.

    Mais comment aller dire à mon menu qu'il faut qu'il change de tête car j'ai sélectionné tel composant ? Je ne vais pas mettre une référence vers la classe qui contient l'interface de l'appli pour chaque élement figurant sur mon canvas, pour que sa fonction de gestion dévènement puisse faire un appel type refInterface.metToiAJourConformementAMaSelection(), c'est moche...

    Je vais pas non plus céder à la facilité de déclarer la fonction en queston statique pour l'utiliser n'importe où.

    Alors, qu'elle est la meilleur facon de procéder, selon vous ?

    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Points : 73
    Points
    73
    Par défaut
    Là où tu gères ton Canvas, tu gères une liste des objets créés (rectangles, lignes, ellipses...).
    Lors du clic, tu parcours toute la liste depuis la fin en cherchant le premier élément qui contient les coordonnées de ton clic. Tu récupères ainsi l'élément le plus haut présent à l'endroit où tu as cliqué, tu peux ensuite faire ce que tu en veux...

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 43
    Points : 53
    Points
    53
    Par défaut
    Bonjour MiniCesc,

    le problème de cette approche, c'est que la possibilité de greffer une fonction chargée de traiter le click sur un élément offerte par WPF (et ce genre de facilités de codage offertes par le framework) ne présente alors plus aucun intérêt.

    En gros tu me suggères de faire ce que je faisais il y a 10 ans avec la win32 api où les MFC : une liste des éléments présents avec une bounding box associé pour chacun et un test de collision sur chaque élément dès qu'un clic est détecté au niveau de l'appli.

    Or, dans la mesure où la WPF s'occupe de la gestion des éléments graphiques, et notamment de la détection de collision, je trouve qu'il serait dommage de s'en passer.

    Ma question n'est pas franchemetn de savoir comment le faire : j'ai 3-4 solutions qui, à mes yeux le permettent, ma question est plus de savoir comment le faire "proprement", au sens de "dans la philosophie générale de WPF" (parce que sur les solutions qui me viennent à l'esprit, aucune de m'apparait comme particulièrement adaptée).

    Merci

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Points : 73
    Points
    73
    Par défaut
    C'est vrai que la solution proposée est assez 'old school' mais malheureusement je ne connais pas assez WPF pour en proposer une plus innovante...

Discussions similaires

  1. Quel impact sur Hibernate ?
    Par Ousta1 dans le forum Hibernate
    Réponses: 27
    Dernier message: 31/01/2016, 18h54
  2. Réponses: 1
    Dernier message: 28/03/2007, 19h20
  3. Question sur le Jmenu avec un sous-menu
    Par Sylmandel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 05/01/2007, 10h35
  4. remplacement de champs : impact sur toute l'appli
    Par acorna dans le forum Access
    Réponses: 6
    Dernier message: 23/08/2006, 14h38
  5. [Evénements]Ajout d'une méthode sur un événement d'un bouton
    Par Salam59 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/03/2006, 15h47

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