Drag Items from a List and Drop Them on a Canvas : Canvas « Windows Presentation Foundation « VB.Net






Drag Items from a List and Drop Them on a Canvas

Drag Items from a List and Drop Them on a Canvas
     

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="WPF " Height="300" Width="300">
    <DockPanel LastChildFill="True" >
        <ListBox DockPanel.Dock="Left" Name="lstLabels">
            <ListBox.Resources>
                <Style TargetType="{x:Type ListBoxItem}">
                    <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListBoxItem_PreviewMouseLeftButtonDown"/>    
                    <EventSetter Event="PreviewMouseMove" Handler="ListBoxItem_PreviewMouseMove"/>
                </Style>
            </ListBox.Resources>
            <ListBoxItem>A</ListBoxItem>
            <ListBoxItem>B</ListBoxItem>
            <ListBoxItem>C</ListBoxItem>
            <ListBoxItem>D</ListBoxItem>
            <ListBoxItem>E</ListBoxItem>
            <ListBoxItem>F</ListBoxItem>
            <ListBoxItem>G</ListBoxItem>
            <ListBoxItem>H</ListBoxItem>
        </ListBox>
        <Canvas AllowDrop="True" Background="Red"
                DragEnter="cvsSurface_DragEnter" Drop="cvsSurface_Drop" 
                Name="cvsSurface" >
        </Canvas>
    </DockPanel>
</Window>
//File:Window.xaml.vb

Imports System
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Input

Namespace WpfApplication1
  Public Partial Class Window1
    Inherits Window
    Private draggedItem As ListBoxItem
    Private startDragPoint As Point

    Public Sub New()
      InitializeComponent()
    End Sub
    Private Sub cvsSurface_DragEnter(sender As Object, e As DragEventArgs)
      If e.Data.GetDataPresent(DataFormats.Text) Then
        e.Effects = DragDropEffects.Copy
      Else
        e.Effects = DragDropEffects.None
      End If
    End Sub
    Private Sub cvsSurface_Drop(sender As Object, e As DragEventArgs)
      Dim newLabel As New Label()
      newLabel.Content = e.Data.GetData(DataFormats.Text)

      cvsSurface.Children.Add(newLabel)
      Canvas.SetLeft(newLabel, 100)
      Canvas.SetTop(newLabel, 200)
    End Sub
    Private Sub ListBoxItem_PreviewMouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs)
      draggedItem = TryCast(sender, ListBoxItem)
      startDragPoint = e.GetPosition(Nothing)
    End Sub
    Private Sub ListBoxItem_PreviewMouseMove(sender As Object, e As MouseEventArgs)
      Dim position As Point = e.GetPosition(Nothing)
      DragDrop.DoDragDrop(draggedItem, draggedItem.Content, DragDropEffects.Copy)
    End Sub
  End Class
End Namespace

   
    
    
    
    
  








Related examples in the same category

1.Align Button along with Canvas positionAlign Button along with Canvas position
2.Using a Canvas to absolutely position elementsUsing a Canvas to absolutely position elements
3.Simple CanvasSimple Canvas
4.StackPanel Demo and CanvasStackPanel Demo and Canvas
5.Canvas with MinHeight and MinWidthCanvas with MinHeight and MinWidth
6.Draws a Path element within a CanvasDraws a Path element within a Canvas
7.Draws several Line elements within a CanvasDraws several Line elements within a Canvas
8.Draws several Polyline elements within a CanvasDraws several Polyline elements within a Canvas
9.Rectangle with Fill and Canvas positionRectangle with Fill and Canvas position
10.Custom Coordinates by transforming the CanvasCustom Coordinates by transforming the Canvas
11.Draw path on a CanvasDraw path on a Canvas
12.Use Canvas coordinationUse Canvas coordination
13.Use Canvas to layout Buttons and LabelsUse Canvas to layout Buttons and Labels
14.Position UI Elements Using Exact CoordinatesPosition UI Elements Using Exact Coordinates
15.Pixel SnappedPixel Snapped
16.Positioning Rectangle on a CanvasPositioning Rectangle on a Canvas
17.Canvas inside canvas, showing relative absolute positioningCanvas inside canvas, showing relative absolute positioning
18.Aligning elements using multiple attached properties of CanvasAligning elements using multiple attached properties of Canvas
19.Layer elements in a Canvas elementLayer elements in a Canvas element
20.Use the four attached properties of the Canvas element: Bottom, Left, Right, and TopUse the four attached properties of the Canvas element: Bottom, Left, Right, and Top
21.Canvas PreviewMouseDown action and MouseDown actionCanvas PreviewMouseDown action and MouseDown action
22.Handles the MouseDown event on the CanvasHandles the MouseDown event on the Canvas
23.StatusBar inside a CanvasStatusBar inside a Canvas
24.Print Visual(Canvas)Print Visual(Canvas)
25.Get position on a Canvas with Canvas.GetLeftGet position on a Canvas with Canvas.GetLeft
26.Use a Thumb to resize a Canvas control by responding to the DragDelta event.Use a Thumb to resize a Canvas control by responding to the DragDelta event.
27.Canvas Positioning Properties SampleCanvas Positioning Properties Sample
28.Canvas.SetTopCanvas.SetTop
29.Canvas.SetBottomCanvas.SetBottom
30.Canvas.SetRightCanvas.SetRight
31.Add buttons to a Canvas with codeAdd buttons to a Canvas with code
32.Set control position for CanvasSet control position for Canvas