2011-05-31 108 views
1

如何为WPF应用程序实现拖放&拖放?我可以打开2个相同的应用程序并将对象从一个拖动到另一个。这是我想拖什么:WPF拖放

<Grid Width="100" Height="50"> 
<Rectangle BackGround="Red"/> 
<TextBlock>Hello World</TextBlock> 
</Grid> 

网格具有看起来相同在它被拖到作为一个从它拖了其他应用程序。任何解决方案

回答

1

我已经使用过龚解决方案拖放成功,它是一个非常容易使用的DLL。你可以在这里看到的是一个小样本:Gong Solutions

-1

例如WPF拖放:用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代码:

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 
1

使用a行为:

你需要像这样的标记:

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

例如:

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