Handling mouse events and doing drag and drop yourself will certainly work, but depending on what you're trying to do, you might be able to use Expression Blend behavior. The Microsoft.Expression.Interactions DLL includes some useful basic behaviors, triggers, and actions that will be used in Silverlight and WPF.
There is a MouseDragElementBehavior that implements the basic drag and drop functions for an element that should work regardless of your layout container (so you are not limited to Canvas). You can drop this behavior onto an element using Blend or define it directly in XAML if you want:
<Rectangle Fill="Red" Stroke="Black" HorizontalAlignment="Left" Width="100" Height="100">
<i:Interaction.Behaviors>
<il:MouseDragElementBehavior/>
</i:Interaction.Behaviors>
</Rectangle>
To use this behavior, your project must reference the System.Windows.Interactivity.dll and Microsoft.Expression.Interactions.dll files.
EDIT ( , #):
Rectangle rect = new Rectangle();
rect.Fill = new SolidColorBrush(Colors.Red);
rect.Width = 100;
rect.Height = 100;
MouseDragElementBehavior dragBehavior = new MouseDragElementBehavior();
dragBehavior.Attach(rect);
Microsoft.Expression.Interactivity.Layout .