代码之家  ›  专栏  ›  技术社区  ›  Xavier Poinas

Silverlight拖放.doDragDrop())

  •  5
  • Xavier Poinas  · 技术社区  · 14 年前

    我真的很难在Silverlight4中得到一个简单的拖放示例。

    以下是我的资料:

    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>
    

    代码落后

    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吗?