Я действительно изо всех сил пытаюсь получить простой образец перетаскивания, работающий в Silverlight 4.
Вот что у меня есть:
XAML
<UserControl x:Class="TestDragDrop.MainPage" Width="350" Height="200"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid Background="White">
<Rectangle Margin="50,50,200,50" Fill="Orange" MouseLeftButtonDown="r1_MouseLeftButtonDown" />
<Rectangle Margin="200,50,50,50" Fill="Orange" AllowDrop="true" Drop="r2_Drop" />
</Grid>
</UserControl>
Code-Behind
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void r1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
DragDrop.DoDragDrop((Rectangle)sender, "test data", DragDropEffects.All, DragDropKeyStates.LeftMouseButton);
}
private void r2_Drop(object sender, System.Windows.DragEventArgs e)
{
MessageBox.Show("Drop: " + e.Data.ToString());
}
}
Событие DragDrop.DragDropCompleted
срабатывает, однако параметр sender всегда равен нулю, и аргументы события не помогают мне узнать больше о событии.
Я также безуспешно пытался использовать пользовательский элемент управления, реализующий IAcceptDrop.
Кроме того, когда я запускаю операцию перетаскивания, у меня нет визуальной информации о том, что что-то происходит (без изменения курсора или чего-либо еще). Что-то не так?
Все примеры, которые я нашел, используют DragDropTargets. Является ли мой единственный способ реализовать DragDropTarget для конкретного типа элементов управления, которые я хочу использовать?