WPF 精修篇 拖拽 DragDrop

原文:WPF 精修篇 拖拽 DragDrop

WPF 实现拖拽

效果


  1. <Grid>
  2. <Grid.ColumnDefinitions>
  3. <ColumnDefinition Width="197*"/>
  4. <ColumnDefinition Width="209*"/>
  5. <ColumnDefinition Width="111*"/>
  6. </Grid.ColumnDefinitions>
  7. <WrapPanel x:Name="accept" HorizontalAlignment="Left" Height="320" VerticalAlignment="Top" Width="207" Grid.Column="1" Margin="2,0,0,0" Background="#FFE7FFE5" Drop="WrapPanel_Drop" AllowDrop="True" />
  8. <WrapPanel x:Name="send" HorizontalAlignment="Left" Height="320" VerticalAlignment="Top" Width="197" Background="#FFFFEDCD" MouseLeftButtonDown="WrapPanel_MouseLeftButtonDown">
  9. <Label Content="Label1" Height="31" Width="51" Background="#FFDCA1A1" Margin="5"/>
  10. <Label Content="Label2" Height="31" Width="51" Background="#FFDCA1A1" Margin="5"/>
  11. <Label Content="Label3" Height="31" Width="51" Background="#FFDCA1A1" Margin="5"/>
  12. <Label Content="Label4" Height="31" Width="51" Background="#FFDCA1A1" Margin="5"/>
  13. <Label Content="Label5" Height="31" Width="51" Background="#FFDCA1A1" Margin="5"/>
  14. <Label Content="Label6" Height="31" Width="51" Background="#FFDCA1A1" Margin="5"/>
  15. </WrapPanel>
  16. </Grid>

  1. private void WrapPanel_Drop(object sender, DragEventArgs e)
  2. {
  3. var item = e.Data;
  4. object data = item.GetData(item.GetFormats()[0]);
  5. if (data is UIElement)
  6. {
  7. send.Children.Remove(data as UIElement);
  8. accept.Children.Add(data as UIElement);
  9. }
  10. }
  11. private void WrapPanel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  12. {
  13. object item = e.Source;
  14. if (item is UIElement)
  15. {
  16. DragDrop.DoDragDrop(item as UIElement, item, DragDropEffects.Move);
  17. }
  18. }

accept 一方的控件 需要加上  AllowDrop="True" 允许接收drop的数据

原文地址:https://www.cnblogs.com/lonelyxmas/p/12075438.html

时间: 2024-11-05 16:26:42

WPF 精修篇 拖拽 DragDrop的相关文章

WPF中元素拖拽的两个实例

原文:WPF中元素拖拽的两个实例 今天结合之前做过的一些拖拽的例子来对这个方面进行一些总结,这里主要用两个例子来说明在WPF中如何使用拖拽进行操作,元素拖拽是一个常见的操作,第一个拖拽的例子是将ListBox中的子元素拖拽到ListView的某一个节点,从而将该子元素作为当前节点的子节点.第二个例子就是将ListView的某一项拖拽到另外一项上从而使两个子项位置互换,这两个例子的原理类似,实现细节上有所差别,下面就具体分析一下这些细节. DEMO1 一 示例截图 图一 示例一截图 二 重点原理分

WPF 精修篇 Winform 嵌入WPF控件

原文:WPF 精修篇 Winform 嵌入WPF控件 首先 创建WPF控件库 这样就有了一个WPF界面 在wpf中增加界面等 在winform中增加WPFDLL 重新生成解决方案 在左侧工具栏 出现WPF 控件 拖到窗体 效果 原文地址:https://www.cnblogs.com/lonelyxmas/p/12075801.html

WPF 精修篇 动画组TransformGroup

原文:WPF 精修篇 动画组TransformGroup 动画分组 TransformGroup 一个元素可能要有缩放 ScaleTransform和移动 TranslateTransform等多个效果组合 就需要分组 RenderTransformOrigin 中心点设置 "0.5,0.5" 为中间 在编辑器中  有设置 <Grid> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Widt

WPF 精修篇 数据触发器

原文:WPF 精修篇 数据触发器 数据触发器 可以使用Binding 来绑定控件 或者数据源 来触发相关动作 举栗子 <Window.Resources> <Style TargetType="{x:Type Label}"> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=red,Path=IsChecked}" Value="True&qu

WPF 精修篇 依赖属性

原文:WPF 精修篇 依赖属性 依赖属性使用场景 1. 希望可在样式中设置属性. 2. 希望属性支持数据绑定. 3. 希望可使用动态资源引用设置属性. 4. 希望从元素树中的父元素自动继承属性值. 5. 希望属性可进行动画处理. 6. 希望属性系统在属性系统.环境或用户执行的操作或者读取并使用样式更改了属性以前的值时报告. 7. 希望使用已建立的.WPF 进程也使用的元数据约定,例如报告更改属性值时是否要求布局系统重新编写元素的可视化对象. 依赖属性生成 PropertyMetadata 后面可

WPF 精修篇 倾斜 SkewTransform

原文:WPF 精修篇 倾斜 SkewTransform 倾斜 SkewTransform AngleX 倾斜X角度 AngleY 倾斜Y角度 CenterX CenterY 中心点 <StackPanel Orientation="Horizontal"> <Image Source="Image/Dog.jpg" Width="200" Height="200"> <Image.RenderTr

WPF 精修篇 数据绑定到对象

原文:WPF 精修篇 数据绑定到对象 数据绑定到对象 首先 我们需要一个对象 public class Preson { private string name; public string Name { get { return name; } set { name = value; } } private string address; public string Address { get { return address; } set { address = value; } } pri

WPF 精修篇 长时间线程加取消功能

原文:WPF 精修篇 长时间线程加取消功能 <Grid> <Grid.RowDefinitions> <RowDefinition Height="11*"/> <RowDefinition Height="29*"/> </Grid.RowDefinitions> <StackPanel Orientation="Horizontal" Margin="0"

WPF 精修篇 缩放ScaleTransform

原文:WPF 精修篇 缩放ScaleTransform 缩放 ScaleTransform 参数 ScaleX  X轴缩小值 正常为1 ScaleY Y轴缩小值 正常为1 CenterY ,CenterX  中心点位置 设置中心点 会按照中心点位置 缩小 这里 做效果 一个张图片 左侧设置了 缩小 中心点默认为左上角 右侧设置了中心点为 X Y各为100  在缩小 会发生位置变化  2张图片来显示区别 <Grid> <StackPanel Orientation="Horizo