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 :

Drag&Drop : Raise DragEventArgs


Sujet :

Windows Presentation Foundation

  1. #1
    Membre du Club Avatar de Lelio1407
    Inscrit en
    Juillet 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 126
    Points : 68
    Points
    68
    Par défaut Drag&Drop : Raise DragEventArgs
    Bonjour à tous,

    J'ai ma MainWindow avec une MainWindow_ListBox.
    Dedans, j'ai un MyUserControl qui contient une UserControl_ListBox.
    Je souhaite pouvoir Drag&Dropper des élements de la première dans la seconde.
    J'initie donc le DoDragDrop dans ma MainWindow_ListBox et je souhaite maintenant implémenter le DragEnter (puis DragLeave et DragMove) pour ma UserControl_ListBox.

    Dans le code de MyUserControl:
    en XAML :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <ListBox Name="UserControl_ListBox" ... AllowDrop="True" DragEnter="UserControl_ListBox_DragEnter">
    et en code-behind :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     public static readonly RoutedEvent _userControl_ListBoxDragEnter =
               EventManager.RegisterRoutedEvent("UserControl_ListBoxDragEnter", RoutingStrategy.Bubble, typeof(DragEventHandler), typeof(MyUserControl));
     
    private void UserControl_ListBox_DragEnter(object sender, DragEventArgs e)
    {
         RaiseEvent(new RoutedEventArgs(_userControl_ListBoxDragEnter ));
     }
     
    public event DragEventHandler UserControl_ListBoxDragEnter
    {
          add { AddHandler( (_userControl_ListBoxDragEnter , value); }
          remove { RemoveHandler(_userControl_ListBoxDragEnter , value); 
    }

    Déclaration de l'évenement dans MyUserControl dans ma Window :
    XAML :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <my:MyUserControl UserControl_ListBoxDragEnter="UserControl_ListBoxDragEnter" AllowDrop="True"/>
    et en code-behind de ma window :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void UserControl_ListBoxDragEnter(object sender, DragEventArgs e)
    {
        if (!e.Data.GetDataPresent("Image"))
        {
              e.Effects = DragDropEffects.None;
              e.Handled = true;
        }
    }


    Seulement, au moment du DragEnter dans ma UserControl_ListBox, j'ai une exception qui me dit :
    Impossible de convertir l'objet de type 'System.Windows.RoutedEventArgs' en type 'System.Windows.DragEventArgs'.
    Quelle est donc la syntaxe pour pouvoir router une évènement de type DragEventArgs?
    Je vous remercie d'avance.

  2. #2
    Membre du Club Avatar de Lelio1407
    Inscrit en
    Juillet 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 126
    Points : 68
    Points
    68
    Par défaut
    En fait, il est inutile de faire remonter l'évenement au niveau de la Window.
    DragEnter,DragLeave et Drop peuvent être implémentés au niveau de la classe du UserControl.

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

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Invité dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2020, 10h10
  2. [JSP][DRAG AND DROP]
    Par hamed dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 23/01/2004, 17h36
  3. drag and drop
    Par jujuesteban dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/06/2003, 09h23

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