【问题标题】:WPF Drag and DropWPF 拖放
【发布时间】:2011-05-31 18:00:40
【问题描述】:

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

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

网格必须在另一个应用程序中看起来与拖动它的应用程序相同。有什么解决办法吗?

【问题讨论】:

    标签: wpf vb.net drag-and-drop


    【解决方案1】:

    我过去成功使用过Gong Solutions Drag and Drop,它是一个非常容易使用的DLL。你可以在这里看到它的一个小样本:Gong Solutions

    【讨论】:

      【解决方案2】:

      使用行为:

      你需要这样的标记:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-10
          • 1970-01-01
          • 1970-01-01
          • 2021-05-16
          • 2012-10-09
          • 2021-02-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多