WPF Drag and Drop

后端 未结 3 623
北恋
北恋 2021-01-07 09:35

How to implement drag & drop for a WPF application? I could open 2 the same apps and drag an object from one to another. Here\'s what I want to drag:



        
相关标签:
3条回答
  • 2021-01-07 10:01

    I've used Gong Solutions Drag and Drop successfully in the past, it's a very easy DLL to use. You can see a small sample of it here: Gong Solutions

    0 讨论(0)
  • 2021-01-07 10:09

    example WPF Drag and Drop : using vb.net 2010

            <Window
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="mofakfree"
            Title="drop test " Height="359" Width="329">
            <Grid>
                    <Label x:Name="label2" AllowDrop="True"  Margin="159,30,12,0" Background="#FF1900FF" Content="To Here" DragEnter="label2_DragEnter" Drop="label2_Drop" Height="51" VerticalAlignment="Top" />
                    <Label x:Name="label1" AllowDrop="True"  Margin="26,30,158,240" Background="#FFDE2626" Content="source" MouseDown="label1_MouseDown"/>
            </Grid>
            </Window>
    

    vb.net code :

     Class mofakfree
    
    
    
            Private Sub label1_MouseDown(ByVal sender as Object, ByVal e as System.Windows.Input.MouseButtonEventArgs)
                'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                Dim lbl As Label = CType(sender, Label)
                DragDrop.DoDragDrop(lbl, lbl.Content, DragDropEffects.Copy)
            End Sub
    
            Private Sub label2_DragEnter(ByVal sender as Object, ByVal e as System.Windows.DragEventArgs)
                'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                If e.Data.GetDataPresent(DataFormats.Text) Then
            e.Effects = DragDropEffects.Copy
                Else
                e.Effects = DragDropEffects.None
            End If
    
            End Sub
    
            Private Sub label2_Drop(ByVal sender as Object, ByVal e as System.Windows.DragEventArgs)
                'xxxxxxxxxxxxxxxxxx
                CType(sender, Label).Content = e.Data.GetData(DataFormats.Text)
    
            End Sub
    
        End Class
    
    0 讨论(0)
  • 2021-01-07 10:14

    Using a Behavior :

    you’ll need markup like this:

    <Window xmlns:i=
    "clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    xmlns:custom=
    "clr-namespace:CustomBehaviorsLibrary;assembly=CustomBehaviorsLibrary >
    

    example :

    <Canvas>
    <Rectangle Canvas.Left="10" Canvas.Top="10" Fill="Yellow" Width="40" Height="60">
    </Rectangle>
    <Ellipse Canvas.Left="10" Canvas.Top="70" Fill="Blue" Width="80" Height="60">
    <i:Interaction.Behaviors>
    <custom:DragInCanvasBehavior></custom:DragInCanvasBehavior>
    </i:Interaction.Behaviors>
    </Ellipse>
    <Ellipse Canvas.Left="80" Canvas.Top="70" Fill="OrangeRed" Width="40" Height="70">
    <i:Interaction.Behaviors>
    <custom:DragInCanvasBehavior></custom:DragInCanvasBehavior>
    </i:Interaction.Behaviors>
    </Ellipse>
    

    0 讨论(0)
提交回复
热议问题