private void OnDragQuery(object sender, DragDropQueryEventArgs e)
{
cue = new ContentControl();
e.QueryResult = true;
cue.MouseUp += new MouseButtonEventHandler(cue_MouseUp);
e.Options.DragCue = cue;
ImageSource IMGSOURCE = new BitmapImage(new Uri("/Images/header_idea.png",UriKind.Relative));
DataTemplate dt = new DataTemplate();
FrameworkElementFactory ef = new FrameworkElementFactory(typeof(Image));
ef.SetValue(Image.SourceProperty, IMGSOURCE);
dt.VisualTree = ef;
cue.ContentTemplate = dt;
e.Options.ArrowCue = RadDragAndDropManager.GenerateArrowCue();
e.Handled = true;
}
5 Answers, 1 is accepted
You may take a look at this help article for further reference on the right way to define your custom Drag Cue.
Maya
the Telerik team
In this case you may try to set the Image directly to the Content property of the ContentControl.
Regards,
Maya
the Telerik team
hello admin,
i have pasted the OnDragQuery event of the drag and drop. the two lines of code in which i have given the datatemplate to the drag cue's content template is is fine enough. But the image source in the datatemplate in xaml is always static and i' not able to bind the image source. So, instead of that i wanted to give the dragcue a new image in C#. It does work, but its not firing and triggering the mouse up event. please point out any mistake and please suggest anything new if this isn't the right way to do it. And please i don't want to use the binding, as it is not working properply. Suggest something in DEeail. In DETAIL please, or attach and perfect and suitable example..Thanks in advance. please its important
void OnDragQuery(object sender, DragDropQueryEventArgs e)
{
ContentControl dragCue = new ContentControl();
e.QueryResult = true;
dragCue.MouseUp += new MouseButtonEventHandler(dragCue_MouseUp);
dragCue.ContentTemplate = this.Resources["DragTemplate"] as DataTemplate; //is fine,
e.Options.DragCue = dragCue; // but has static image souce in xaml
//Image im = new Image(); //this commented code doesn't fire
//im.Width = 40; //the MouseUp event, when i
//im.Height = 40; //don't give the
//im.Source = new BitmapImage(new Uri(@"/Images/drive.png", UriKind.Relative)); //content template to it. want
//e.Options.DragCue = im; // to use it to give dynamic image
//source instead
// of above highlighted code.
e.Options.ArrowCue = RadDragAndDropManager.GenerateArrowCue();
e.Handled = true;
}
You cannot handle mouse events from the drag cue. I guess you want to do this to determine whether the drag completes or is canceled. You can do this by the e.options.status in the raddraganddropmaanger events (draqquery, draginfo, dropquery, dropinfo).
More information can be found here:
http://www.telerik.com/help/silverlight/raddraganddrop-getting-started-with-drag-and-drop.html
http://www.telerik.com/help/silverlight/raddraganddrop-events-overview.html
http://www.telerik.com/help/silverlight/raddragdrop-events-eventargs.html
Best wishes,
Tsvyatko
the Telerik team