Silverlight DragDrop.DoDragDrop ()

Мне очень трудно получить простой образец перетаскивания, работающий в 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 действительно срабатывает, однако параметр отправителя всегда равен нулю, а аргументы события не помогают мне узнать больше о событии.

У меня также есть безуспешно пытался использовать настраиваемый элемент управления, реализующий IAcceptDrop.

Кроме того, когда я начинаю операцию перетаскивания, у меня нет визуальной обратной связи, что что-то происходит (нет изменений в курсоре или чем-то еще). Что-то не так?

Все образцы, которые я нашел, используют DragDropTargets. Единственное, что я могу сделать - реализовать DragDropTarget для конкретного типа элементов управления, которые я хочу использовать?

5
задан Xavier Poinas 6 October 2010 в 01:24
поделиться