我真的很难在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吗?