开发者

WPF Drag and Drop

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:

<Grid Width="100" Height="50">
 <Rectangle BackGround="Red"/>
 开发者_运维问答<TextBlock>Hello World</TextBlock>
</Grid>

The Grid has to look the same in the other app where it is dragged as the one from it was dragged. Any solutions?


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


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>


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜