以下分别记录label、listbox、treeview三个控件的拖动示例:

1.对被拖动控件,实现拖动事件,主要是通过各种鼠标事件,实现DragDrop.DoDragDrop方法。

2.对于需要拖动到的目的控件,需要实现AllowDrop="True" Drop="TargetLabel_Drop"

   <Window.Resources>
<Style TargetType="ListBoxItem">
<EventSetter Event="PreviewMouseMove" Handler="ListBox_PreviewMouseMove"/>
</Style>
<Style TargetType="TreeViewItem">
<EventSetter Event="PreviewMouseMove" Handler="TreeView_PreviewMouseMove"/>
</Style> </Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<StackPanel>
<Label Name="Label" Margin="5,10" Content="This is Label" MouseDown="Label_MouseDown"/>
<ListBox Margin="5,10">
<ListBoxItem>000</ListBoxItem>
<ListBoxItem>111</ListBoxItem>
<ListBoxItem>222</ListBoxItem>
</ListBox>
<TreeView Name="treeView" Margin="5,10">
<TreeViewItem Header="aa">
<TreeViewItem Header="00"/>
<TreeViewItem Header="11"/>
<TreeViewItem Header="22"/>
</TreeViewItem>
</TreeView>
<Button Height="30" Margin="5,10" Name="btn" Content="Rest" Click="btn_Click"/>
</StackPanel>
<Rectangle Grid.Column="1" Fill="Red" Width="1"/>
<Label Name="TargetLabel" Grid.Column="2" Content="Come here" Background="AliceBlue" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" AllowDrop="True" Drop="TargetLabel_Drop"/>
</Grid>
  private void TargetLabel_Drop(object sender, DragEventArgs e)
{
var txt = e.Data.GetData(DataFormats.Text);
this.TargetLabel.Content = txt;
} private void btn_Click(object sender, RoutedEventArgs e)
{
this.TargetLabel.Content = "Come here";
} private void Label_MouseDown(object sender, MouseButtonEventArgs e)
{
DragDrop.DoDragDrop(Label, Label.Content, DragDropEffects.Copy);
} private void ListBox_PreviewMouseMove(object sender, MouseEventArgs e)
{
var item = sender as ListBoxItem;
DragDrop.DoDragDrop(item, item.Content, DragDropEffects.Copy);
} private void TreeView_PreviewMouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton==MouseButtonState.Released)
{
return;
} var t = sender as TreeView;
var x = this.treeView.SelectedItem;
if (x==null)
{
return;
}
var item = x as TreeViewItem;
DragDrop.DoDragDrop(item, item.Header, DragDropEffects.Copy);
}

WPF之实现控件内容拖动的更多相关文章

  1. 在WPF程序中将控件所呈现的内容保存成图像(转载)

    在WPF程序中将控件所呈现的内容保存成图像 转自:http://www.cnblogs.com/TianFang/archive/2012/10/07/2714140.html 有的时候,我们需要将控 ...

  2. WPF学习06:转换控件内容为可存储图片

    在图形软件中,我们经常使用到"另存为图片"的功能,本文即介绍如何将WPF控件显示内容转换为图片. , , PixelFormats.Pbgra32); bitmapRender.R ...

  3. 在WPF中的Canvas上实现控件的拖动、缩放

    如题,项目中需要实现使用鼠标拖动.缩放一个矩形框,WPF中没有现成的,那就自己造一个轮子:) 造轮子前先看看Windows自带的画图工具中是怎样做的,如下图: 在被拖动的矩形框四周有9个小框,可以从不 ...

  4. 在WPF程序中将控件所呈现的内容保存成图像

    原文:在WPF程序中将控件所呈现的内容保存成图像 有的时候,我们需要将控件所呈现的内容保存成图像保存下来,例如:InkCanvas的手写墨迹,WebBrowser中的网页等.可能有人会说,这个不就是截 ...

  5. WPF打印控件内容

    当我们想打印控件内容时,如一个Grid中的内容,可以用WPF中PrintDialog类的PrintVisual()方法来实现 界面如下: XAML代码如下 <Grid> <Grid. ...

  6. WPF 曲线图表控件(自制)(二)

    原文:WPF 曲线图表控件(自制)(二) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/775218 ...

  7. WPF的DataGrid控件从excel里复制数据然后粘贴

    WPF的DataGrid控件不能像winform的DataGridView控件一样,支持值的粘贴.WPF的DataGrid控件本质上是跟数据绑定联系在一起,所以需要进行复制粘贴的操作,可以在wpf里用 ...

  8. 深入理解MVC C#+HtmlAgilityPack+Dapper走一波爬虫 StackExchange.Redis 二次封装 C# WPF 用MediaElement控件实现视频循环播放 net 异步与同步

    深入理解MVC   MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性 ...

  9. WPF 曲线图表控件(自制)(一)

    原文:WPF 曲线图表控件(自制)(一) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/775092 ...

随机推荐

  1. 从UI设计转向前端的艰辛过程,从背单词开始。。。

    很纠结到底是继续做UI设计还是转行前端呢?从刚开始的害怕代码到接触代码又喜欢代码的过程,我在想我是不是太飘了,我感觉我做事就是三分钟热度.我感觉学前端对我最大的阻碍就是英语单词了,10个单词里面最起码 ...

  2. WebMagic 实现爬虫入门教程

    本示例实现某电影网站最新片源名称列表及详情页下载地址的抓取. webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发. WebMagic 特点: 完全 ...

  3. HTML+Jquery实现多图片上传预览功能

    HTML:使用input的onchange事件,它一改变就触发事件 <p id="p3"> <input name="File" onchan ...

  4. 17.JAVA-Dom、Sax解析XML详解

    在JAVA中,解析有三种方式: Dom解析(支持改删,耗内存). Sax解析(不支持改删,不耗内存). Pull解析(在Android中推荐使用的一种解析XML的方式,在下章学习). 1.支持Dom与 ...

  5. Git与GitHub 学习笔记

    以下信息来源于网络资料,并进行整理与精简 Git是目前世界上最先进的分布式版本控制系统,和svn,vss等一样都是进行版本控制的. GitHub是一个软件项目的托管平台,相当于自己建立的 svn服务器 ...

  6. Spring底层源码分析

    Spring 运行原理 Spring 启动时读取应用程序提供的 Bean 配置信息,并在 Spring 容器中生成一份相应的Bean 配置注册表,然后根据这张注册表实例化 Bean,装配好 Bean ...

  7. 摄像头CMOS和CCD的比较

    转载自网络,在此做一下总结,仅供参考: 1.CCD每曝光一次,在快门关闭后进行像素转移处理,将每一行中每一个像素(pixel)的电荷信号依序传入“缓冲器”中,由底端的线路引导输出至 CCD 旁的放大器 ...

  8. PYTHON5000:CMOS图象传感器演示

    http://www.onsemi.cn/PowerSolutions/supportVideo.do?docId=1002896

  9. Day 02 计算机的基本组成及工作原理

    目录 计算机的构成 CPU 控制器 运算器 存储器 内存 外存 I/O (input & output) 输入设备 输出设备 什么是编程语言 什么是编程 为什么要编程 多核CPU 32位和64 ...

  10. 【系列专题】JavaScript设计模式 重温系列(9篇全)

    JavaScript 设计模式 [JS]164-JavaScript设计模式--单体模式 [JS]165-JavaScript设计模式--工厂模式 [JS]166-JavaScript设计模式--迭代 ...