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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Lelio1407
    Inscrit en
    Juillet 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 126
    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 confirmé Avatar de Lelio1407
    Inscrit en
    Juillet 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 126
    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