Here's the scenario (simplified): I have a control (let's say, a Rectangle) on the Window. I hooked the MouseMove event to make it initiate a drag&drop. Then in the MouseDown event I let it animate, moving 50 pixels to the right. However, when I hold my mouse down on the Rectangle, the control moves about one pixel, and then pauses. Only when I move my mouse will the animation continue. Does anyone know why and how to solve this? Thanks a lot!!
Here's the source code to reproduce this problem:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void rectangle1_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
DragDrop.DoDragDrop(this, new DataObject(), DragDropEffects.Copy);
}
}
private void rectangle1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
ThicknessAnimation animation = new ThicknessAnimation();
Thickness t = rectangle1.Margin;
t.Left += 50;
animation.To = t;
animation.Duration = new Duration(TimeSpan.FromSeconds(0.25));
rectangle1.BeginAnimation(Rectangle.MarginProperty, animation);
}
}
In case you want Window1.xaml:
<Window x:Class="DragDropHaltingTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Rectangle Margin="12,12,0,0" Name="rectangle1" Stroke="Black" Fill="Blue" Height="29" HorizontalAlignment="Left" VerticalAlignment="Top" Width="31" MouseMove="rectangle1_MouseMove" MouseLeftButtonDown="rectangle1_MouseLeftButtonDown" />
</Grid>