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 :
et en code-behind :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<ListBox Name="UserControl_ListBox" ... AllowDrop="True" DragEnter="UserControl_ListBox_DragEnter">
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 :
et en code-behind de ma window :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<my:MyUserControl UserControl_ListBoxDragEnter="UserControl_ListBoxDragEnter" AllowDrop="True"/>
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 :
Quelle est donc la syntaxe pour pouvoir router une évènement de type DragEventArgs?Impossible de convertir l'objet de type 'System.Windows.RoutedEventArgs' en type 'System.Windows.DragEventArgs'.
Je vous remercie d'avance.
Partager