如何解决WPF拖放
| 如何实现WPF应用程序的拖放?我可以打开2个相同的应用程序,然后将一个对象从一个拖到另一个。这是我要拖动的内容:<Grid Width=\"100\" Height=\"50\">
<Rectangle BackGround=\"Red\"/>
<TextBlock>Hello World</TextBlock>
</Grid>
网格在拖动的其他应用程序中的外观必须与从中拖动的网格相同。有什么办法吗?
解决方法
我过去曾成功使用过Gong Solutions拖放,这是一个非常易于使用的DLL。您可以在这里看到它的一个小样本:Gong Solutions
, 使用行为:
您需要这样的标记:
<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>
, 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,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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。