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
            }
        }

 

在不同控件中拖拽數據就這樣實現了,很簡單吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM