拖动Grid中的Rectangle

时间:2010-08-24 13:13:43

标签: silverlight

我设法对“可拖动的内部网格”问题进行排序,但我找到了另一个问题。

当我开始拖动Rectangle时,它会消失并重新出现在mouseup上。

我的代码:

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>

现在,我知道我的代码正在从Grid中分离Rectangle(这就是为什么它消失了),任何想法我怎么能阻止它(或者优雅的工作会很好)^ _ ^

1 个答案:

答案 0 :(得分:2)

您的拖动未设置拖动提示。最简单的解决方法是在OnDragQuery的中间添加此代码。然后,您将在光标上拖动一个很好的匹配矩形:

        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;

我打开了网格,因此您可以在此屏幕截图中清楚地看到效果,因为拖动了2x2矩形:

alt text