WPF之实现控件内容拖动
以下分别记录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之实现控件内容拖动的更多相关文章
- 在WPF程序中将控件所呈现的内容保存成图像(转载)
在WPF程序中将控件所呈现的内容保存成图像 转自:http://www.cnblogs.com/TianFang/archive/2012/10/07/2714140.html 有的时候,我们需要将控 ...
- WPF学习06:转换控件内容为可存储图片
在图形软件中,我们经常使用到"另存为图片"的功能,本文即介绍如何将WPF控件显示内容转换为图片. , , PixelFormats.Pbgra32); bitmapRender.R ...
- 在WPF中的Canvas上实现控件的拖动、缩放
如题,项目中需要实现使用鼠标拖动.缩放一个矩形框,WPF中没有现成的,那就自己造一个轮子:) 造轮子前先看看Windows自带的画图工具中是怎样做的,如下图: 在被拖动的矩形框四周有9个小框,可以从不 ...
- 在WPF程序中将控件所呈现的内容保存成图像
原文:在WPF程序中将控件所呈现的内容保存成图像 有的时候,我们需要将控件所呈现的内容保存成图像保存下来,例如:InkCanvas的手写墨迹,WebBrowser中的网页等.可能有人会说,这个不就是截 ...
- WPF打印控件内容
当我们想打印控件内容时,如一个Grid中的内容,可以用WPF中PrintDialog类的PrintVisual()方法来实现 界面如下: XAML代码如下 <Grid> <Grid. ...
- WPF 曲线图表控件(自制)(二)
原文:WPF 曲线图表控件(自制)(二) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/775218 ...
- WPF的DataGrid控件从excel里复制数据然后粘贴
WPF的DataGrid控件不能像winform的DataGridView控件一样,支持值的粘贴.WPF的DataGrid控件本质上是跟数据绑定联系在一起,所以需要进行复制粘贴的操作,可以在wpf里用 ...
- 深入理解MVC C#+HtmlAgilityPack+Dapper走一波爬虫 StackExchange.Redis 二次封装 C# WPF 用MediaElement控件实现视频循环播放 net 异步与同步
深入理解MVC MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性 ...
- WPF 曲线图表控件(自制)(一)
原文:WPF 曲线图表控件(自制)(一) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/775092 ...
随机推荐
- 每个开发人员都应该知道的11个Linux命令
本文主要挑选出读者有必要首先学习的 11 个 Linux 命令,如果不熟悉的读者可以在虚拟机或云服务器上实操下,对于开发人员来说,能熟练掌握 Linux 做一些基本的操作是必要的! 事不宜迟,这里有 ...
- Eclipse 安装 ShellEd 不成功的解决办法
我是Win7, 64位的操作系统,Eclipse 版本是 32位的eclipse-java-luna-SR1-win32.在安装 ShellEd 时,一直安装不成功,前后出现两种现象: 1. 在按照网 ...
- luogu P1044 栈
题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即poppop(从栈顶弹出一个元素)和pushpush(将一个元素进栈). 栈的重要性 ...
- Flask蓝图遇到的问题
欢迎加入python学习交流群 667279387 最近在使用flask开发一个业余学习项目,由于之前都是"小打小闹",整个程序都是放在一个文件夹里面的,也没有注意这个问题.这次项 ...
- 自然语言处理(NLP) - 数学基础(1) - 排列组合
正如我在<自然语言处理(NLP) - 数学基础(1) - 总述>一文中所提到的NLP所关联的概率论(Probability Theory)知识点是如此的多, 饭只能一口一口地吃了, 我们先 ...
- Day 10 面向对象基础
目录 面对过程编程 面向对象编程 类 定义类 对象 定义对象 定制对象独有特征 面对过程编程 分析解决问题所需要的步骤, 用函数将这些步骤一步一步实现, 使用的时候一个个调用就可以了 优点: 复杂的问 ...
- 【JS】368- 浅析JavaScript异步
一直以来都知道 JavaScript是一门单线程语言,在笔试过程中不断的遇到一些输出结果的问题,考量的是对异步编程掌握情况.一般被问到异步的时候脑子里第一反应就是 Ajax, setTimseout. ...
- 选择排序 C&&C++
选择排序 选择排序即在每一步中选取最小值重新排列,从而达到排序的目的 流程: (1)先从原始数组选择一个最小数据和第一个位置交换 (2)剩下的n-1个数据选择最小的和第二个位置交换 (3)不断重复 ...
- TOMCAT_server.xml
该文件描述了如何启动Tomcat Server <Server> <Listener /> <GlobaNamingResources> < ...
- apache与tomcat的区别
1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展. 2. Apache和Tomcat都可以做为独立的web服务器来运行,但是A ...