Drag Drop Between ListBox and Caliburn Micro

1 posts, 0 answers
  1. Dickson
    Dickson avatar
    1 posts
    Member since:
    Nov 2012

    Posted 30 Jan 2013 Link to this post


    I am currently using Silverlight 4, Caliburn Micro and the RadDragAndDropManager to implement a drag and drop of listboxitems between two listboxes.

    There isn't much examples done with Caliburn Micro. I am hoping someone can provide a simple example done with Caliburn Micro.

    I am not too sure if I am going in the right direction because I AM able to trigger the DragQuery event when dragging an item in the source listbox. However, there is no DragCue visible at all. Also, when releasing the mouse in the target listbox, I am not able to trigger the Drop related events.

    The following is the XAML for the one of the listboxes I wrote. The other one is exactly the same with the same triggers.

    <ListBox Grid.Row="2"
                     ItemsSource="{Binding Items}"
                    <trigger:DragQueryRoutedEventTrigger EventName="DragQuery">
                        <cal:ActionMessage MethodName="DragQuery">
                            <cal:Parameter Value="$source" />
                            <cal:Parameter Value="$eventArgs" />
                            <cal:Parameter Value="$view" />
                    <trigger:DropQueryRoutedEventTrigger EventName="DropQuery">
                        <cal:ActionMessage MethodName="DropQuery">
                            <cal:Parameter Value="$source" />
                            <cal:Parameter Value="$eventArgs" />
                            <cal:Parameter Value="$view" />
                    <Style TargetType="ListBoxItem">
                        <Setter Property="telerik:RadDragAndDropManager.AllowDrag" Value="True" />
                        <Setter Property="telerik:RadDragAndDropManager.AllowDrop" Value="True" />

    I have the following methods in my View Model. I cannot get any DragCues going and cannot trigger the DropQuery method.
    public void DragQuery(object sender, DragDropQueryEventArgs e, RulesManagerView view)
                if (e.Options.Status == DragStatus.DragQuery)
                    var draggedItem = e.Options.Source;
                    // Create Drag Cue
                    // 1. Create a ContentControl. It will be used as a DragCue.
                    ContentControl dragCue = new ContentControl();
                    // 2. Set the dragged item to the ContentControl's Content property.
                    dragCue.Content = draggedItem.DataContext;
                    // 3. Use a DataTemplate to "say" how the dragged item will be displayed.
                    dragCue.ContentTemplate = view.Resources["DragCueTemplate"] as DataTemplate;
                    // 4. Set the ContentControl to the DragDropOptions' DragCue property.
                    e.Options.DragCue = dragCue;
                    // The other code follow here
            public void DropQuery(object sender, DragDropQueryEventArgs e, RulesManagerView view)
Back to Top