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 :

Contrôle personnalisé et event


Sujet :

Windows Presentation Foundation

  1. #1
    Invité
    Invité(e)
    Par défaut Contrôle personnalisé et event
    Bonjour,

    J'ai un contrôle WPF personnalisé, contenant un label, et une petit croix en haut à droite dans un rond rouge. Je veux affecter un event à l'action de cliquer sur le rond rouge, genre supprimer mon contrôle.
    Mais cette fonction doit être externe à la classe de mon contrôle personnalisé (mon contrôle se trouve dans une liste de laquelle il faut aussi que je le supprime)
    En gros je veux pouvoir faire dans ma main windows :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monControle.OnClickBoutonRouge+=maFonction;
    J'ai fait un truc à l'arrache. Dans la classe de mon contrôle, j'ai créé la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void SetEvent(MouseButtonEventHandler maFonction)
    {
       monBoutonRouge.MouseLeftButtonDown += maFonction;
    }
    Et dans la fenêtre où j'ai mis mon contrôle perso je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monControle.SetEvent(maFonction);
    Ca pourrait me suffire, sauf que dans maFonction, le sender que je récupère est le bouton rouge, alors que je voudrais que ce soit tout mon contrôle.
    Je me doute qu'il existe une méthode élégante pour faire ça, avec un event personnalisé, mais je ne trouve pas.

    Merci

  2. #2
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    A priori deux solutions :
    - créer un "event" dans ton contrôle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public event EventHandler Closed;
    puis le lever pour notifier les éventuels abonnés au moment du click :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    monBoutonRouge.MouseLeftButtonDown += (sender, args) =>
    {
        if (Closed != null) Closed(this, ...);
    };
    - créer une DP de type ICommand dans ton contrôle qui sera invoquée lors du click :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    monBoutonRouge.MouseLeftButtonDown += (sender, args) =>
    {
        if (CloseCommand != null && CloseCommand.CanExecute(...))
    	{
    		CloseCommand.Execute(...);
    	}
    }
    Le point important est de toujours découpler la logique interne de ton contrôle, un click sur un bouton, de sa sémantique.
    Ainsi, si plus tard tu décides que la suppression/fermeture ne sera plus gérée par un bouton tu n'as pas à changer l'interface de ton contrôle.

Discussions similaires

  1. Classes de contrôle personnalisé (dérivée)
    Par c_jm2 dans le forum wxPython
    Réponses: 2
    Dernier message: 20/01/2009, 23h53
  2. Classes de contrôle personnalisé
    Par Shadok dans le forum wxPython
    Réponses: 4
    Dernier message: 26/11/2008, 16h18
  3. [3.5] Gestion d'évènement d'un contrôle personnalisé
    Par franculo_caoulene dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/09/2008, 17h50
  4. Problème d'Evènement sur contrôle personnalisé
    Par Ishizaki dans le forum ASP.NET
    Réponses: 6
    Dernier message: 08/08/2008, 11h16
  5. [VB.NET] Contrôle personnalisé dans une dll personnalisée
    Par c3b12 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/10/2004, 07h56

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