WPF C#拖放事件

| 我有一个画布,可以在其中放置一些工具来创建图表(该图表位于tabitem2中)。 我要做的是将一个工具拖放到画布上时,该事件将一个事件吐出到文本框(位于tabitem3中)。 XAML:
<ListBox>
        <ListBox.Resources>
            <Style TargetType=\"{x:Type Image}\">
                <Setter Property=\"Width\" Value=\"100\"/>
                <Setter Property=\"Height\" Value=\"100\"/>
                <EventSetter Event=\"MouseLeftButtonDown\" Handler=\"DragImage\"/>
            </Style>
        </ListBox.Resources>
        <ListBoxItem>
            <Image Source=\"toolitem1.png\"></Image>
        </ListBoxItem>
    </ListBox>
 <Canvas x:Name=\"Canvas\" AllowDrop=\"True\" Background=\"Aqua\" Drop=\"DropImage\"/>
背后的代码:
private void DragImage(object sender, MouseButtonEventArgs e)
    {

        Image image = e.Source as Image;
        DataObject data = new DataObject(typeof(ImageSource), image.Source);
        DragDrop.DoDragDrop(image, data, DragDropEffects.Copy);

    }


    private void DropImage(object sender, DragEventArgs e)
    {
        ImageSource image = e.Data.GetData(typeof(ImageSource)) as ImageSource;
        Image imageControl = new Image() { Width = image.Width, Height = image.Height, Source = image };
        Canvas.SetLeft(imageControl, e.GetPosition(this.Canvas).X);
        Canvas.SetTop(imageControl, e.GetPosition(this.Canvas).Y);
        this.Canvas.Children.Add(imageControl);
}
更新: 添加了一些示例代码,并尝试了以下人员的建议,无济于事。看起来当我尝试在ListBoxItem对象中使用DragDrop.Drop时,它将覆盖画布的DropImage事件,因此我仍然被卡住。     
已邀请:
每个放置目标只有一个事件。您想要在该处理程序中利用的与源相关的任何信息都应作为data参数的一部分传递给DoDragDrop     
你看过掉落事件吗? 基本上,在.net / wpf 4中,有一个DragDrop类可帮助解决这些问题。这是有关此问题的MSDN文档。 [编辑] 根据我所看到的,您正在拖放图像。我认为您需要做的是,制作一些自定义对象来保存您的图像和一些数据。如果将图像设为依赖项属性,则可以将其绑定到列表框项目中,然后在放置事件中访问其他属性,以获取所需的数据。     
我认为这篇文章会对您有所帮助。也有第2部分和第3部分。 祝好运     

要回复问题请先登录注册