WPF 拖拽功能
2010-08-11 21:36
134 查看
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Data; namespace WpfApplication1 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { Point startPoint; ListBoxItem contact; public MainWindow() { InitializeComponent(); } private static T FindAnchestor<T>(DependencyObject current) where T : DependencyObject { do { if (current is T) { return (T)current; } current = VisualTreeHelper.GetParent(current); } while (current != null); return null; } private void listView1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { startPoint = e.GetPosition(null); } private void listView1_PreviewMouseMove(object sender, MouseEventArgs e) { Point mousPos = e.GetPosition(null); Vector diff = startPoint - mousPos; if ((e.LeftButton == MouseButtonState.Pressed) && (Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance) && (Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)) { ListViewItem listViewItem = FindAnchestor<ListViewItem>((DependencyObject)e.OriginalSource); if (listViewItem == null) { return; } ListView listView = sender as ListView; contact = (ListViewItem)listView.ItemContainerGenerator.ItemFromContainer(listViewItem); DataObject dataObject = new DataObject("MyFormat", contact); DragDrop.DoDragDrop(listViewItem, dataObject, DragDropEffects.Move); } } private void canvas1_Drop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent("MyFormat")) { contact = e.Data.GetData("MyFormat") as ListBoxItem; Canvas CanvasView = sender as Canvas; this.listView1.Items.Remove(contact); CanvasView.Children.Add(contact); } } private void canvas1_DragEnter(object sender, DragEventArgs e) { if (!(e.Data.GetDataPresent("contact")) || (sender == e.Source)) { e.Effects = DragDropEffects.None; } } } }
参考阅读:
Drag and Drop in WPF
http://www.wpftutorial.net/DragAndDrop.html
相关文章推荐
- WPF实现拖拽功能
- WPF之快速实现拖拽功能
- WPF简单拖拽功能实现
- WPF 拖拽功能
- 【WPF】鼠标拖拽功能DragOver和Drop
- WPF学习笔记--一个具有拖拽、平移、放大等界面导航功能的窗体
- WPF实现拖拽功能
- wpf 的拖拽功能实现(含拖拽复制功能实现)
- RecyclerView实现滑动和拖拽功能(带小例子)
- wpf采用Xps实现文档显示、套打功能(原创)
- JS基于面向对象实现的拖拽功能示例
- Swift下使用UICollectionView 实现长按拖拽功能
- WPF 为PasswordBox控件的Password增加绑定功能
- WPF DataGrid分页功能实现代码
- wpf 与winform 之间拖拽数据
- WPF ListView 简单的拖拽实现(转)
- WPF图片浏览器之删除图像功能(彻底删除和删除到回收站)
- duilib : 在对话框中增加文件拖拽功能
- jQuery应用-实现博客个性主页布局拖拽功能
- html5+原生js实现拖放与拖拽功能