views:

62

answers:

1

Hey there peeps.

I managed to sort my "draggable inside grid" issue, however I found another issue.

When I start dragging the Rectangle, it dissapears and reappears on mouseup.

My code:

public Page()
  {
   InitializeComponent();

   dragGrid.AddHandler(RadDragAndDropManager.DragQueryEvent, new EventHandler<DragDropQueryEventArgs>(OnDragQuery));
   dragGrid.AddHandler(RadDragAndDropManager.DropQueryEvent, new EventHandler<DragDropQueryEventArgs>(OnDropQuery));
   dragGrid.AddHandler(RadDragAndDropManager.DropInfoEvent, new EventHandler<DragDropEventArgs>(OnDropInfo));
   dragGrid.AddHandler(RadDragAndDropManager.DragInfoEvent, new EventHandler<DragDropEventArgs>(OnDragInfo));

   Loaded += new RoutedEventHandler(Page_Loaded);
  }

  void Page_Loaded(object sender, RoutedEventArgs e)
  {
   //Initialise the draggable elements
   RadDragAndDropManager.SetAllowDrag(onePX, true);
   RadDragAndDropManager.SetAllowDrag(twoPX, true);
   RadDragAndDropManager.SetAllowDrag(fourPX, true);
  }

  private void OnDragQuery(object sender, DragDropQueryEventArgs e)
  {
   if (e.Options.Status == DragStatus.DragQuery)
   {
    e.QueryResult = true;

    //The DragAndDropmanager will detach the element and drag it around the screen. 
    var source = e.Options.Source as Rectangle;
    source.Visibility = Visibility.Collapsed;

    e.Options.Payload = source;

    e.Handled = true;
   }

   if (e.Options.Status == DragStatus.DropSourceQuery)
   {
    e.QueryResult = true;
   }
  }

  private void OnDropQuery(object sender, DragDropQueryEventArgs e)
  {
   if (e.Options.Status == DragStatus.DropDestinationQuery)
   {
    e.QueryResult = true;
   }
  }

  private void OnDragInfo(object sender, DragDropEventArgs e)
  {
   if (e.Options.Status == DragStatus.DragCancel)
   {
    e.Options.Source.Visibility = Visibility.Visible;
   }
  }

  private void OnDropInfo(object sender, DragDropEventArgs e)
  {
   if (e.Options.Status == DragStatus.DropComplete)
   {
    Grid.SetColumn(e.Options.Source, Grid.GetColumn(e.Options.Destination));
    Grid.SetRow(e.Options.Source, Grid.GetRow(e.Options.Destination));

    e.Options.Source.Visibility = Visibility.Visible;

    e.Handled = true;
   }
  }

XAML:

<UserControl
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:dragDrop="clr-namespace:Telerik.Windows.Controls.DragDrop;assembly=Telerik.Windows.Controls"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="TestBench.Page"
        MinHeight="500" MinWidth="300">
    <Grid x:Name="LayoutRoot" Background="White">
     <Grid x:Name="dragGrid" Margin="0,0,0,58" ShowGridLines="False">
      <Grid.RowDefinitions>
       <RowDefinition Height="32" />
       <RowDefinition Height="32" />
       <RowDefinition Height="32" />
       <RowDefinition Height="32" />
       <RowDefinition Height="32" />
       <RowDefinition Height="32" />
       <RowDefinition Height="32" />
       <RowDefinition Height="32" />
       <RowDefinition Height="32" />
       <RowDefinition Height="32" />
       <RowDefinition Height="32" />
       <RowDefinition Height="32" />
       <RowDefinition Height="32" />
       <RowDefinition Height="32" />
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
       <ColumnDefinition Width="32" />
       <ColumnDefinition Width="32" />
       <ColumnDefinition Width="32" />
       <ColumnDefinition Width="32" />
       <ColumnDefinition Width="32" />
       <ColumnDefinition Width="32" />
       <ColumnDefinition Width="32" />
       <ColumnDefinition Width="32" />
       <ColumnDefinition Width="32" />
       <ColumnDefinition Width="32" />
       <ColumnDefinition Width="32" />
       <ColumnDefinition Width="32" />
       <ColumnDefinition Width="32" />
      </Grid.ColumnDefinitions>

      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="0" Grid.Row="0" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="1" Grid.Row="0" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="2" Grid.Row="0" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="3" Grid.Row="0" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="4" Grid.Row="0" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="5" Grid.Row="0" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="6" Grid.Row="0" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="7" Grid.Row="0" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="8" Grid.Row="0" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="9" Grid.Row="0" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="10" Grid.Row="0" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="11" Grid.Row="0" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="12" Grid.Row="0" />

      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="0" Grid.Row="1" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="1" Grid.Row="1" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="2" Grid.Row="1" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="3" Grid.Row="1" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="4" Grid.Row="1" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="5" Grid.Row="1" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="6" Grid.Row="1" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="7" Grid.Row="1" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="8" Grid.Row="1" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="9" Grid.Row="1" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="10" Grid.Row="1" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="11" Grid.Row="1" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="12" Grid.Row="1" />

      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="0" Grid.Row="2" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="1" Grid.Row="2" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="2" Grid.Row="2" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="3" Grid.Row="2" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="4" Grid.Row="2" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="5" Grid.Row="2" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="6" Grid.Row="2" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="7" Grid.Row="2" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="8" Grid.Row="2" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="9" Grid.Row="2" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="10" Grid.Row="2" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="11" Grid.Row="2" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="12" Grid.Row="2" />

      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="0" Grid.Row="3" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="1" Grid.Row="3" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="2" Grid.Row="3" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="3" Grid.Row="3" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="4" Grid.Row="3" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="5" Grid.Row="3" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="6" Grid.Row="3" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="7" Grid.Row="3" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="8" Grid.Row="3" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="9" Grid.Row="3" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="10" Grid.Row="3" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="11" Grid.Row="3" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="12" Grid.Row="3" />

      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="0" Grid.Row="4" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="1" Grid.Row="4" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="2" Grid.Row="4" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="3" Grid.Row="4" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="4" Grid.Row="4" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="5" Grid.Row="4" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="6" Grid.Row="4" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="7" Grid.Row="4" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="8" Grid.Row="4" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="9" Grid.Row="4" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="10" Grid.Row="4" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="11" Grid.Row="4" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="12" Grid.Row="4" />

      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="0" Grid.Row="5" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="1" Grid.Row="5" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="2" Grid.Row="5" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="3" Grid.Row="5" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="4" Grid.Row="5" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="5" Grid.Row="5" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="6" Grid.Row="5" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="7" Grid.Row="5" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="8" Grid.Row="5" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="9" Grid.Row="5" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="10" Grid.Row="5" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="11" Grid.Row="5" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="12" Grid.Row="5" />

      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="0" Grid.Row="6" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="1" Grid.Row="6" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="2" Grid.Row="6" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="3" Grid.Row="6" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="4" Grid.Row="6" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="5" Grid.Row="6" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="6" Grid.Row="6" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="7" Grid.Row="6" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="8" Grid.Row="6" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="9" Grid.Row="6" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="10" Grid.Row="6" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="11" Grid.Row="6" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="12" Grid.Row="6" />

      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="0" Grid.Row="7" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="1" Grid.Row="7" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="2" Grid.Row="7" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="3" Grid.Row="7" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="4" Grid.Row="7" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="5" Grid.Row="7" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="6" Grid.Row="7" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="7" Grid.Row="7" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="8" Grid.Row="7" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="9" Grid.Row="7" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="10" Grid.Row="7" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="11" Grid.Row="7" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="12" Grid.Row="7" />

      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="0" Grid.Row="8" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="1" Grid.Row="8" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="2" Grid.Row="8" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="3" Grid.Row="8" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="4" Grid.Row="8" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="5" Grid.Row="8" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="6" Grid.Row="8" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="7" Grid.Row="8" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="8" Grid.Row="8" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="9" Grid.Row="8" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="10" Grid.Row="8" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="11" Grid.Row="8" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="12" Grid.Row="8" />

      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="0" Grid.Row="9" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="1" Grid.Row="9" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="2" Grid.Row="9" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="3" Grid.Row="9" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="4" Grid.Row="9" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="5" Grid.Row="9" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="6" Grid.Row="9" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="7" Grid.Row="9" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="8" Grid.Row="9" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="9" Grid.Row="9" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="10" Grid.Row="9" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="11" Grid.Row="9" />
      <Rectangle dragDrop:RadDragAndDropManager.AllowDrop="True" Fill="LightBlue"
       Grid.Column="12" Grid.Row="9" />

      <Rectangle Width="32" Height="32" Fill="Black" x:Name="onePX"
       Grid.Column="0" Grid.Row="0" />

      <Rectangle Width="32" Height="64" Fill="Black" x:Name="twoPX"
       Grid.Column="0" Grid.Row="2" Grid.RowSpan="2" />

      <Rectangle Width="64" Height="64" Fill="Black" x:Name="fourPX"
       Grid.Column="0" Grid.Row="5"
       Grid.ColumnSpan="2"
       Grid.RowSpan="2" />
      <TextBlock x:Name="textOutput" HorizontalAlignment="Left" Margin="8,8,0,8" Grid.Row="10" Grid.RowSpan="2" TextWrapping="Wrap" Text="TextBlock" d:LayoutOverrides="Height" Grid.ColumnSpan="6" Width="184"/>
     </Grid>
    </Grid>
</UserControl>

Now, I know that my code is detaching the Rectangle from the Grid (which is why it's dissapearing), any idea how I can stop this (or an elegant work around would be nice) ^_^

+2  A: 

Your drag does not set a drag cue. SImplest fix is to add this code in the middle of your OnDragQuery. You will then get a nice matching rectangle dragging around on the cursor:

        source.Visibility = Visibility.Collapsed;
        /* add these 5 lines - copies properties into a drag cue  */
        var cue = new Rectangle();
        cue.Height = source.Height;
        cue.Width = source.Width;
        cue.Fill = source.Fill;
        e.Options.DragCue = cue;

        e.Options.Payload = source;

I turned on the grid so you could see the effect clearly in this screen-shot as the 2x2 rectangle is dragged:

alt text

Enough already
This one is a nice solution. But, usually it will be done using Adorners.
Avatar
@Avatar: please explain the use of Adorners in more detail. We are all here to learn new things as well as help :)
Enough already
Excellent work my friend! Thanking you! +1rep
Neurofluxation