zoukankan      html  css  js  c++  java
  • WPF 实现控件间拖拽内容

    想实现这样一个常用功能:在ListBox的一个Item上点住左键,然后拖拽到另外一个控件(如ListView中),松开左键,数据已经拖拽过来。

    步骤如下:

    1. 设置ListBox 的AllowDrop属性为True

    2. 在ListBoxItem 的Style中设置EventSetter

     
    <Style x:Key="MyListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
        
        <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListBoxItem_PreviewMouseLeftButtonDown"/>
    </Style>    
    

     3. 实现ListBoxItem_PreviewMouseLeftButtonDown

    private void ListBoxItem_PreviewMouseLeftButtonDown(object sender, MouseEventArgs e)
            {
                ListBoxItem item = (sender as Control) as ListBoxItem;
                if (item != null )
                {
                    DataObject dataObject = new DataObject(item.DataContext);
                    DragDrop.DoDragDrop(item, dataObject, DragDropEffects.Copy);//启动拖拽
                }
            }

    4. 在目的控件也将AllowDrop的属性设为True,然后实现目的控件的Drop Event

    private void ***Control_Drop(object sender, DragEventArgs e)
            {
                // 注册Drop事件用来接收数据。
                IDataObject data = new DataObject();
                data = e.Data;
                object obj = data.GetData(typeof(YourDataContext));
    
                if (obj != null)
                {
                    Do your job
                }
            }
    

    在不同控件中拖拽数据就这样实现了,很简单吧。

  • 相关阅读:
    产品 | What's产品经理
    产品 | 互联网+“加油”
    微信小程序 | 未来O2O电商的“阴谋”
    推荐书籍 | 产品必备书籍
    iOS | NSProxy
    iOS | 解决中文乱码
    HTML DOM addEventListener() 方法
    给每个对象加上新的属性
    vue.config.js基础配置
    SEO要点
  • 原文地址:https://www.cnblogs.com/mantian/p/3220502.html
Copyright © 2011-2022 走看看