WPF开发快速入门【7】WPF的拖放功能(Drag and Drop)

打印 上一主题 下一主题

主题 893|帖子 893|积分 2679

概述
本文描述WPF的拖放功能(Drag and Drop)。
拖放功能涉及到两个功能,一个就是拖,一个是放。拖放可以发生在两个控件之间,也可以在一个控件自己内部拖放。假设界面上有两个控件,一个TreeView,一个ListView,那么可能发生的拖动有以下几种情况:
1、TreeView -> ListView
2、ListView -> TreeView 
3、TreeView -> TreeView 
4、ListView -> ListView
对于拖的控件需要在鼠标移动事件中检测左键按下并启动拖动操作;对于放的控件需要处理Drop等事件来接收数据。如果是在控件内部拖动,则以上两个动作都要处理。
为简便起见,本文就以ListView拖动到TreeView为例进行讲解。 
 

在拖与放的控件之间一定会有数据传递,我们可以设计一个类型来进行数据传输,由于ListView本身就是绑定到一个对象列表的,我就把选中的对象字节拿来传递了,没有额外定义类型。
  1.     public class ListViewAdvNodeItem
  2.     {
  3.         public string Title {get;set;}      
  4.      
  5.     }
复制代码
 listView.ItemsSource的数据类型为:BindableCollection ListViewAdvNodeItems,通过this.listView.SelectedItem可以得到的数据类型即为:ListViewAdvNodeItem
 设计代码如下:
  1.     <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  2.               AllowDrop="True"
  3.               DragDrop.Drop="treeView_Drop"
  4.               DragDrop.DragOver="treeView_DragOver"
  5.               DragDrop.DragEnter="treeView_DragEnter"
  6.               DragDrop.DragLeave="treeView_DragLeave" >   
  7.     </TreeView>    <TreeView x:Name="treeView"               
  8.               AllowDrop="True"
  9.               DragDrop.Drop="treeView_Drop"
  10.               DragDrop.DragOver="treeView_DragOver"
  11.               DragDrop.DragEnter="treeView_DragEnter"
  12.               DragDrop.DragLeave="treeView_DragLeave" >   
  13.     </TreeView>   
  14.     <TreeView x:Name="treeView"               
  15.               AllowDrop="True"
  16.               DragDrop.Drop="treeView_Drop"
  17.               DragDrop.DragOver="treeView_DragOver"
  18.               DragDrop.DragEnter="treeView_DragEnter"
  19.               DragDrop.DragLeave="treeView_DragLeave" >   
  20.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  21.     </ListView>
复制代码
 在listView_MouseMove事件中,我们将启动拖动功能。
  1.     <TreeView x:Name="treeView"               
  2.               AllowDrop="True"
  3.               DragDrop.Drop="treeView_Drop"
  4.               DragDrop.DragOver="treeView_DragOver"
  5.               DragDrop.DragEnter="treeView_DragEnter"
  6.               DragDrop.DragLeave="treeView_DragLeave" >   
  7.     </TreeView>   private void listView_MouseMove(object sender, MouseEventArgs e)       {
  8.          if (sender is ListView listview
  9.     <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  10.               AllowDrop="True"
  11.               DragDrop.Drop="treeView_Drop"
  12.               DragDrop.DragOver="treeView_DragOver"
  13.               DragDrop.DragEnter="treeView_DragEnter"
  14.               DragDrop.DragLeave="treeView_DragLeave" >   
  15.     </TreeView>    <TreeView x:Name="treeView"               
  16.               AllowDrop="True"
  17.               DragDrop.Drop="treeView_Drop"
  18.               DragDrop.DragOver="treeView_DragOver"
  19.               DragDrop.DragEnter="treeView_DragEnter"
  20.               DragDrop.DragLeave="treeView_DragLeave" >   
  21.     </TreeView>   
  22.     <TreeView x:Name="treeView"               
  23.               AllowDrop="True"
  24.               DragDrop.Drop="treeView_Drop"
  25.               DragDrop.DragOver="treeView_DragOver"
  26.               DragDrop.DragEnter="treeView_DragEnter"
  27.               DragDrop.DragLeave="treeView_DragLeave" >   
  28.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  29.     </ListView>         && e.LeftButton == MouseButtonState.Pressed
  30.     <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  31.               AllowDrop="True"
  32.               DragDrop.Drop="treeView_Drop"
  33.               DragDrop.DragOver="treeView_DragOver"
  34.               DragDrop.DragEnter="treeView_DragEnter"
  35.               DragDrop.DragLeave="treeView_DragLeave" >   
  36.     </TreeView>    <TreeView x:Name="treeView"               
  37.               AllowDrop="True"
  38.               DragDrop.Drop="treeView_Drop"
  39.               DragDrop.DragOver="treeView_DragOver"
  40.               DragDrop.DragEnter="treeView_DragEnter"
  41.               DragDrop.DragLeave="treeView_DragLeave" >   
  42.     </TreeView>   
  43.     <TreeView x:Name="treeView"               
  44.               AllowDrop="True"
  45.               DragDrop.Drop="treeView_Drop"
  46.               DragDrop.DragOver="treeView_DragOver"
  47.               DragDrop.DragEnter="treeView_DragEnter"
  48.               DragDrop.DragLeave="treeView_DragLeave" >   
  49.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  50.     </ListView>         && listview.SelectedItem != null)    <TreeView x:Name="treeView"               
  51.               AllowDrop="True"
  52.               DragDrop.Drop="treeView_Drop"
  53.               DragDrop.DragOver="treeView_DragOver"
  54.               DragDrop.DragEnter="treeView_DragEnter"
  55.               DragDrop.DragLeave="treeView_DragLeave" >   
  56.     </TreeView> {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  57.               AllowDrop="True"
  58.               DragDrop.Drop="treeView_Drop"
  59.               DragDrop.DragOver="treeView_DragOver"
  60.               DragDrop.DragEnter="treeView_DragEnter"
  61.               DragDrop.DragLeave="treeView_DragLeave" >   
  62.     </TreeView>    <TreeView x:Name="treeView"               
  63.               AllowDrop="True"
  64.               DragDrop.Drop="treeView_Drop"
  65.               DragDrop.DragOver="treeView_DragOver"
  66.               DragDrop.DragEnter="treeView_DragEnter"
  67.               DragDrop.DragLeave="treeView_DragLeave" >   
  68.     </TreeView>   
  69.     <TreeView x:Name="treeView"               
  70.               AllowDrop="True"
  71.               DragDrop.Drop="treeView_Drop"
  72.               DragDrop.DragOver="treeView_DragOver"
  73.               DragDrop.DragEnter="treeView_DragEnter"
  74.               DragDrop.DragLeave="treeView_DragLeave" >   
  75.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  76.     </ListView>DragDrop.DoDragDrop(listview, listview.SelectedItem, DragDropEffects.Move);    <TreeView x:Name="treeView"               
  77.               AllowDrop="True"
  78.               DragDrop.Drop="treeView_Drop"
  79.               DragDrop.DragOver="treeView_DragOver"
  80.               DragDrop.DragEnter="treeView_DragEnter"
  81.               DragDrop.DragLeave="treeView_DragLeave" >   
  82.     </TreeView> }        }
复制代码
 通过DragDrop.DoDragDrop方法启动拖动,该方法有三个参数:
1、发起拖动的控件
2、传输的数据(这里是一个ListViewAdvNodeItem类型的对象)
3、拖动的类型,一般为Move或Copy
 

下面就要在TreeView控件中处理放的事件了
设计代码:
  1.     <TreeView x:Name="treeView"               
  2.               AllowDrop="True"
  3.               DragDrop.Drop="treeView_Drop"
  4.               DragDrop.DragOver="treeView_DragOver"
  5.               DragDrop.DragEnter="treeView_DragEnter"
  6.               DragDrop.DragLeave="treeView_DragLeave" >   
  7.     </TreeView>
复制代码
 首先要设置AllowDrop="True",然后重点处理DragDrop.Drop事件:
  1.         private void treeView_Drop(object sender, DragEventArgs e)        {    <TreeView x:Name="treeView"               
  2.               AllowDrop="True"
  3.               DragDrop.Drop="treeView_Drop"
  4.               DragDrop.DragOver="treeView_DragOver"
  5.               DragDrop.DragEnter="treeView_DragEnter"
  6.               DragDrop.DragLeave="treeView_DragLeave" >   
  7.     </TreeView> if (e.Data.GetData(typeof(ListViewAdvNodeItem)) is ListViewAdvNodeItem fromListNode)    <TreeView x:Name="treeView"               
  8.               AllowDrop="True"
  9.               DragDrop.Drop="treeView_Drop"
  10.               DragDrop.DragOver="treeView_DragOver"
  11.               DragDrop.DragEnter="treeView_DragEnter"
  12.               DragDrop.DragLeave="treeView_DragLeave" >   
  13.     </TreeView> {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  14.               AllowDrop="True"
  15.               DragDrop.Drop="treeView_Drop"
  16.               DragDrop.DragOver="treeView_DragOver"
  17.               DragDrop.DragEnter="treeView_DragEnter"
  18.               DragDrop.DragLeave="treeView_DragLeave" >   
  19.     </TreeView>    <TreeView x:Name="treeView"               
  20.               AllowDrop="True"
  21.               DragDrop.Drop="treeView_Drop"
  22.               DragDrop.DragOver="treeView_DragOver"
  23.               DragDrop.DragEnter="treeView_DragEnter"
  24.               DragDrop.DragLeave="treeView_DragLeave" >   
  25.     </TreeView>   
  26.     <TreeView x:Name="treeView"               
  27.               AllowDrop="True"
  28.               DragDrop.Drop="treeView_Drop"
  29.               DragDrop.DragOver="treeView_DragOver"
  30.               DragDrop.DragEnter="treeView_DragEnter"
  31.               DragDrop.DragLeave="treeView_DragLeave" >   
  32.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  33.     </ListView>if (e.OriginalSource is TextBlock txtTitle)    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  34.               AllowDrop="True"
  35.               DragDrop.Drop="treeView_Drop"
  36.               DragDrop.DragOver="treeView_DragOver"
  37.               DragDrop.DragEnter="treeView_DragEnter"
  38.               DragDrop.DragLeave="treeView_DragLeave" >   
  39.     </TreeView>    <TreeView x:Name="treeView"               
  40.               AllowDrop="True"
  41.               DragDrop.Drop="treeView_Drop"
  42.               DragDrop.DragOver="treeView_DragOver"
  43.               DragDrop.DragEnter="treeView_DragEnter"
  44.               DragDrop.DragLeave="treeView_DragLeave" >   
  45.     </TreeView>   
  46.     <TreeView x:Name="treeView"               
  47.               AllowDrop="True"
  48.               DragDrop.Drop="treeView_Drop"
  49.               DragDrop.DragOver="treeView_DragOver"
  50.               DragDrop.DragEnter="treeView_DragEnter"
  51.               DragDrop.DragLeave="treeView_DragLeave" >   
  52.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  53.     </ListView>{ if (txtTitle.Tag is Excerpt toExcerpt)    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  54.               AllowDrop="True"
  55.               DragDrop.Drop="treeView_Drop"
  56.               DragDrop.DragOver="treeView_DragOver"
  57.               DragDrop.DragEnter="treeView_DragEnter"
  58.               DragDrop.DragLeave="treeView_DragLeave" >   
  59.     </TreeView>    <TreeView x:Name="treeView"               
  60.               AllowDrop="True"
  61.               DragDrop.Drop="treeView_Drop"
  62.               DragDrop.DragOver="treeView_DragOver"
  63.               DragDrop.DragEnter="treeView_DragEnter"
  64.               DragDrop.DragLeave="treeView_DragLeave" >   
  65.     </TreeView>   
  66.     <TreeView x:Name="treeView"               
  67.               AllowDrop="True"
  68.               DragDrop.Drop="treeView_Drop"
  69.               DragDrop.DragOver="treeView_DragOver"
  70.               DragDrop.DragEnter="treeView_DragEnter"
  71.               DragDrop.DragLeave="treeView_DragLeave" >   
  72.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  73.     </ListView>    {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  74.               AllowDrop="True"
  75.               DragDrop.Drop="treeView_Drop"
  76.               DragDrop.DragOver="treeView_DragOver"
  77.               DragDrop.DragEnter="treeView_DragEnter"
  78.               DragDrop.DragLeave="treeView_DragLeave" >   
  79.     </TreeView>    <TreeView x:Name="treeView"               
  80.               AllowDrop="True"
  81.               DragDrop.Drop="treeView_Drop"
  82.               DragDrop.DragOver="treeView_DragOver"
  83.               DragDrop.DragEnter="treeView_DragEnter"
  84.               DragDrop.DragLeave="treeView_DragLeave" >   
  85.     </TreeView>   
  86.     <TreeView x:Name="treeView"               
  87.               AllowDrop="True"
  88.               DragDrop.Drop="treeView_Drop"
  89.               DragDrop.DragOver="treeView_DragOver"
  90.               DragDrop.DragEnter="treeView_DragEnter"
  91.               DragDrop.DragLeave="treeView_DragLeave" >   
  92.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  93.     </ListView>        //处理业务    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  94.               AllowDrop="True"
  95.               DragDrop.Drop="treeView_Drop"
  96.               DragDrop.DragOver="treeView_DragOver"
  97.               DragDrop.DragEnter="treeView_DragEnter"
  98.               DragDrop.DragLeave="treeView_DragLeave" >   
  99.     </TreeView>    <TreeView x:Name="treeView"               
  100.               AllowDrop="True"
  101.               DragDrop.Drop="treeView_Drop"
  102.               DragDrop.DragOver="treeView_DragOver"
  103.               DragDrop.DragEnter="treeView_DragEnter"
  104.               DragDrop.DragLeave="treeView_DragLeave" >   
  105.     </TreeView>   
  106.     <TreeView x:Name="treeView"               
  107.               AllowDrop="True"
  108.               DragDrop.Drop="treeView_Drop"
  109.               DragDrop.DragOver="treeView_DragOver"
  110.               DragDrop.DragEnter="treeView_DragEnter"
  111.               DragDrop.DragLeave="treeView_DragLeave" >   
  112.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  113.     </ListView>    }    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  114.               AllowDrop="True"
  115.               DragDrop.Drop="treeView_Drop"
  116.               DragDrop.DragOver="treeView_DragOver"
  117.               DragDrop.DragEnter="treeView_DragEnter"
  118.               DragDrop.DragLeave="treeView_DragLeave" >   
  119.     </TreeView>    <TreeView x:Name="treeView"               
  120.               AllowDrop="True"
  121.               DragDrop.Drop="treeView_Drop"
  122.               DragDrop.DragOver="treeView_DragOver"
  123.               DragDrop.DragEnter="treeView_DragEnter"
  124.               DragDrop.DragLeave="treeView_DragLeave" >   
  125.     </TreeView>   
  126.     <TreeView x:Name="treeView"               
  127.               AllowDrop="True"
  128.               DragDrop.Drop="treeView_Drop"
  129.               DragDrop.DragOver="treeView_DragOver"
  130.               DragDrop.DragEnter="treeView_DragEnter"
  131.               DragDrop.DragLeave="treeView_DragLeave" >   
  132.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  133.     </ListView>}    <TreeView x:Name="treeView"               
  134.               AllowDrop="True"
  135.               DragDrop.Drop="treeView_Drop"
  136.               DragDrop.DragOver="treeView_DragOver"
  137.               DragDrop.DragEnter="treeView_DragEnter"
  138.               DragDrop.DragLeave="treeView_DragLeave" >   
  139.     </TreeView> }    <TreeView x:Name="treeView"               
  140.               AllowDrop="True"
  141.               DragDrop.Drop="treeView_Drop"
  142.               DragDrop.DragOver="treeView_DragOver"
  143.               DragDrop.DragEnter="treeView_DragEnter"
  144.               DragDrop.DragLeave="treeView_DragLeave" >   
  145.     </TreeView>  }
复制代码
在处理Drop事件时,我们需要知道两件事情,1:拖来的是什么数据?2、放哪里了?
首先,通过e.Data.GetData(typeof(ListViewAdvNodeItem))就可以获得数据来源,这里GetData得到的对象就是上面的 listview.SelectedItem;
其次,通过e.OriginalSource 我们将获得数据放在哪里的问题。这段代码很难理解,要回头看一下TreeView的ItemTemplate定义
  1.     <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  2.               AllowDrop="True"
  3.               DragDrop.Drop="treeView_Drop"
  4.               DragDrop.DragOver="treeView_DragOver"
  5.               DragDrop.DragEnter="treeView_DragEnter"
  6.               DragDrop.DragLeave="treeView_DragLeave" >   
  7.     </TreeView>    <TreeView x:Name="treeView"               
  8.               AllowDrop="True"
  9.               DragDrop.Drop="treeView_Drop"
  10.               DragDrop.DragOver="treeView_DragOver"
  11.               DragDrop.DragEnter="treeView_DragEnter"
  12.               DragDrop.DragLeave="treeView_DragLeave" >   
  13.     </TreeView>   
  14.     <TreeView x:Name="treeView"               
  15.               AllowDrop="True"
  16.               DragDrop.Drop="treeView_Drop"
  17.               DragDrop.DragOver="treeView_DragOver"
  18.               DragDrop.DragEnter="treeView_DragEnter"
  19.               DragDrop.DragLeave="treeView_DragLeave" >   
  20.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  21.     </ListView>    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  22.               AllowDrop="True"
  23.               DragDrop.Drop="treeView_Drop"
  24.               DragDrop.DragOver="treeView_DragOver"
  25.               DragDrop.DragEnter="treeView_DragEnter"
  26.               DragDrop.DragLeave="treeView_DragLeave" >   
  27.     </TreeView>    <TreeView x:Name="treeView"               
  28.               AllowDrop="True"
  29.               DragDrop.Drop="treeView_Drop"
  30.               DragDrop.DragOver="treeView_DragOver"
  31.               DragDrop.DragEnter="treeView_DragEnter"
  32.               DragDrop.DragLeave="treeView_DragLeave" >   
  33.     </TreeView>   
  34.     <TreeView x:Name="treeView"               
  35.               AllowDrop="True"
  36.               DragDrop.Drop="treeView_Drop"
  37.               DragDrop.DragOver="treeView_DragOver"
  38.               DragDrop.DragEnter="treeView_DragEnter"
  39.               DragDrop.DragLeave="treeView_DragLeave" >   
  40.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  41.     </ListView>    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  42.               AllowDrop="True"
  43.               DragDrop.Drop="treeView_Drop"
  44.               DragDrop.DragOver="treeView_DragOver"
  45.               DragDrop.DragEnter="treeView_DragEnter"
  46.               DragDrop.DragLeave="treeView_DragLeave" >   
  47.     </TreeView>    <TreeView x:Name="treeView"               
  48.               AllowDrop="True"
  49.               DragDrop.Drop="treeView_Drop"
  50.               DragDrop.DragOver="treeView_DragOver"
  51.               DragDrop.DragEnter="treeView_DragEnter"
  52.               DragDrop.DragLeave="treeView_DragLeave" >   
  53.     </TreeView>   
  54.     <TreeView x:Name="treeView"               
  55.               AllowDrop="True"
  56.               DragDrop.Drop="treeView_Drop"
  57.               DragDrop.DragOver="treeView_DragOver"
  58.               DragDrop.DragEnter="treeView_DragEnter"
  59.               DragDrop.DragLeave="treeView_DragLeave" >   
  60.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  61.     </ListView>    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  62.               AllowDrop="True"
  63.               DragDrop.Drop="treeView_Drop"
  64.               DragDrop.DragOver="treeView_DragOver"
  65.               DragDrop.DragEnter="treeView_DragEnter"
  66.               DragDrop.DragLeave="treeView_DragLeave" >   
  67.     </TreeView>    <TreeView x:Name="treeView"               
  68.               AllowDrop="True"
  69.               DragDrop.Drop="treeView_Drop"
  70.               DragDrop.DragOver="treeView_DragOver"
  71.               DragDrop.DragEnter="treeView_DragEnter"
  72.               DragDrop.DragLeave="treeView_DragLeave" >   
  73.     </TreeView>   
  74.     <TreeView x:Name="treeView"               
  75.               AllowDrop="True"
  76.               DragDrop.Drop="treeView_Drop"
  77.               DragDrop.DragOver="treeView_DragOver"
  78.               DragDrop.DragEnter="treeView_DragEnter"
  79.               DragDrop.DragLeave="treeView_DragLeave" >   
  80.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  81.     </ListView>    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  82.               AllowDrop="True"
  83.               DragDrop.Drop="treeView_Drop"
  84.               DragDrop.DragOver="treeView_DragOver"
  85.               DragDrop.DragEnter="treeView_DragEnter"
  86.               DragDrop.DragLeave="treeView_DragLeave" >   
  87.     </TreeView>    <TreeView x:Name="treeView"               
  88.               AllowDrop="True"
  89.               DragDrop.Drop="treeView_Drop"
  90.               DragDrop.DragOver="treeView_DragOver"
  91.               DragDrop.DragEnter="treeView_DragEnter"
  92.               DragDrop.DragLeave="treeView_DragLeave" >   
  93.     </TreeView>   
  94.     <TreeView x:Name="treeView"               
  95.               AllowDrop="True"
  96.               DragDrop.Drop="treeView_Drop"
  97.               DragDrop.DragOver="treeView_DragOver"
  98.               DragDrop.DragEnter="treeView_DragEnter"
  99.               DragDrop.DragLeave="treeView_DragLeave" >   
  100.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  101.     </ListView>    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  102.               AllowDrop="True"
  103.               DragDrop.Drop="treeView_Drop"
  104.               DragDrop.DragOver="treeView_DragOver"
  105.               DragDrop.DragEnter="treeView_DragEnter"
  106.               DragDrop.DragLeave="treeView_DragLeave" >   
  107.     </TreeView>    <TreeView x:Name="treeView"               
  108.               AllowDrop="True"
  109.               DragDrop.Drop="treeView_Drop"
  110.               DragDrop.DragOver="treeView_DragOver"
  111.               DragDrop.DragEnter="treeView_DragEnter"
  112.               DragDrop.DragLeave="treeView_DragLeave" >   
  113.     </TreeView>   
  114.     <TreeView x:Name="treeView"               
  115.               AllowDrop="True"
  116.               DragDrop.Drop="treeView_Drop"
  117.               DragDrop.DragOver="treeView_DragOver"
  118.               DragDrop.DragEnter="treeView_DragEnter"
  119.               DragDrop.DragLeave="treeView_DragLeave" >   
  120.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  121.     </ListView>    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  122.               AllowDrop="True"
  123.               DragDrop.Drop="treeView_Drop"
  124.               DragDrop.DragOver="treeView_DragOver"
  125.               DragDrop.DragEnter="treeView_DragEnter"
  126.               DragDrop.DragLeave="treeView_DragLeave" >   
  127.     </TreeView>    <TreeView x:Name="treeView"               
  128.               AllowDrop="True"
  129.               DragDrop.Drop="treeView_Drop"
  130.               DragDrop.DragOver="treeView_DragOver"
  131.               DragDrop.DragEnter="treeView_DragEnter"
  132.               DragDrop.DragLeave="treeView_DragLeave" >   
  133.     </TreeView>   
  134.     <TreeView x:Name="treeView"               
  135.               AllowDrop="True"
  136.               DragDrop.Drop="treeView_Drop"
  137.               DragDrop.DragOver="treeView_DragOver"
  138.               DragDrop.DragEnter="treeView_DragEnter"
  139.               DragDrop.DragLeave="treeView_DragLeave" >   
  140.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  141.     </ListView>    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  142.               AllowDrop="True"
  143.               DragDrop.Drop="treeView_Drop"
  144.               DragDrop.DragOver="treeView_DragOver"
  145.               DragDrop.DragEnter="treeView_DragEnter"
  146.               DragDrop.DragLeave="treeView_DragLeave" >   
  147.     </TreeView>    <TreeView x:Name="treeView"               
  148.               AllowDrop="True"
  149.               DragDrop.Drop="treeView_Drop"
  150.               DragDrop.DragOver="treeView_DragOver"
  151.               DragDrop.DragEnter="treeView_DragEnter"
  152.               DragDrop.DragLeave="treeView_DragLeave" >   
  153.     </TreeView>   
  154.     <TreeView x:Name="treeView"               
  155.               AllowDrop="True"
  156.               DragDrop.Drop="treeView_Drop"
  157.               DragDrop.DragOver="treeView_DragOver"
  158.               DragDrop.DragEnter="treeView_DragEnter"
  159.               DragDrop.DragLeave="treeView_DragLeave" >   
  160.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  161.     </ListView>    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  162.               AllowDrop="True"
  163.               DragDrop.Drop="treeView_Drop"
  164.               DragDrop.DragOver="treeView_DragOver"
  165.               DragDrop.DragEnter="treeView_DragEnter"
  166.               DragDrop.DragLeave="treeView_DragLeave" >   
  167.     </TreeView>    <TreeView x:Name="treeView"               
  168.               AllowDrop="True"
  169.               DragDrop.Drop="treeView_Drop"
  170.               DragDrop.DragOver="treeView_DragOver"
  171.               DragDrop.DragEnter="treeView_DragEnter"
  172.               DragDrop.DragLeave="treeView_DragLeave" >   
  173.     </TreeView>   
  174.     <TreeView x:Name="treeView"               
  175.               AllowDrop="True"
  176.               DragDrop.Drop="treeView_Drop"
  177.               DragDrop.DragOver="treeView_DragOver"
  178.               DragDrop.DragEnter="treeView_DragEnter"
  179.               DragDrop.DragLeave="treeView_DragLeave" >   
  180.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  181.     </ListView>    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  182.               AllowDrop="True"
  183.               DragDrop.Drop="treeView_Drop"
  184.               DragDrop.DragOver="treeView_DragOver"
  185.               DragDrop.DragEnter="treeView_DragEnter"
  186.               DragDrop.DragLeave="treeView_DragLeave" >   
  187.     </TreeView>    <TreeView x:Name="treeView"               
  188.               AllowDrop="True"
  189.               DragDrop.Drop="treeView_Drop"
  190.               DragDrop.DragOver="treeView_DragOver"
  191.               DragDrop.DragEnter="treeView_DragEnter"
  192.               DragDrop.DragLeave="treeView_DragLeave" >   
  193.     </TreeView>   
  194.     <TreeView x:Name="treeView"               
  195.               AllowDrop="True"
  196.               DragDrop.Drop="treeView_Drop"
  197.               DragDrop.DragOver="treeView_DragOver"
  198.               DragDrop.DragEnter="treeView_DragEnter"
  199.               DragDrop.DragLeave="treeView_DragLeave" >   
  200.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  201.     </ListView>
复制代码
从这个模板定义可以看出,TreeView中用来显示Title的控件是一个TextBlock,然后这个TextBlock的Tag属性上还绑定了一个业务对象。
再回头看上面一段代码,就可以看出具体的逻辑:当鼠标放开时,其所指的对象是一个TextBlock,然后取到这个TextBlock的Tag对象,里面包含了我想要的业务数据。
到此拖放功能就完成了。
为了更好的展现效果,我们可以对拖放的目标进行判断,对于一些不能放的位置显示禁止拖放的图标,这时就需要处理DragOver事件了
  1.         private void treeView_DragOver(object sender, DragEventArgs e)        {   //判断是否允许拖动    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  2.               AllowDrop="True"
  3.               DragDrop.Drop="treeView_Drop"
  4.               DragDrop.DragOver="treeView_DragOver"
  5.               DragDrop.DragEnter="treeView_DragEnter"
  6.               DragDrop.DragLeave="treeView_DragLeave" >   
  7.     </TreeView>    <TreeView x:Name="treeView"               
  8.               AllowDrop="True"
  9.               DragDrop.Drop="treeView_Drop"
  10.               DragDrop.DragOver="treeView_DragOver"
  11.               DragDrop.DragEnter="treeView_DragEnter"
  12.               DragDrop.DragLeave="treeView_DragLeave" >   
  13.     </TreeView>   
  14.     <TreeView x:Name="treeView"               
  15.               AllowDrop="True"
  16.               DragDrop.Drop="treeView_Drop"
  17.               DragDrop.DragOver="treeView_DragOver"
  18.               DragDrop.DragEnter="treeView_DragEnter"
  19.               DragDrop.DragLeave="treeView_DragLeave" >   
  20.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  21.     </ListView>    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  22.               AllowDrop="True"
  23.               DragDrop.Drop="treeView_Drop"
  24.               DragDrop.DragOver="treeView_DragOver"
  25.               DragDrop.DragEnter="treeView_DragEnter"
  26.               DragDrop.DragLeave="treeView_DragLeave" >   
  27.     </TreeView>    <TreeView x:Name="treeView"               
  28.               AllowDrop="True"
  29.               DragDrop.Drop="treeView_Drop"
  30.               DragDrop.DragOver="treeView_DragOver"
  31.               DragDrop.DragEnter="treeView_DragEnter"
  32.               DragDrop.DragLeave="treeView_DragLeave" >   
  33.     </TreeView>   
  34.     <TreeView x:Name="treeView"               
  35.               AllowDrop="True"
  36.               DragDrop.Drop="treeView_Drop"
  37.               DragDrop.DragOver="treeView_DragOver"
  38.               DragDrop.DragEnter="treeView_DragEnter"
  39.               DragDrop.DragLeave="treeView_DragLeave" >   
  40.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  41.     </ListView> e.Effects = DragDropEffects.None;    <TreeView x:Name="treeView"               
  42.               AllowDrop="True"
  43.               DragDrop.Drop="treeView_Drop"
  44.               DragDrop.DragOver="treeView_DragOver"
  45.               DragDrop.DragEnter="treeView_DragEnter"
  46.               DragDrop.DragLeave="treeView_DragLeave" >   
  47.     </TreeView> if (e.Data.GetData(typeof(ListViewAdvNodeItem)) is ListViewAdvNodeItem fromListNode)    <TreeView x:Name="treeView"               
  48.               AllowDrop="True"
  49.               DragDrop.Drop="treeView_Drop"
  50.               DragDrop.DragOver="treeView_DragOver"
  51.               DragDrop.DragEnter="treeView_DragEnter"
  52.               DragDrop.DragLeave="treeView_DragLeave" >   
  53.     </TreeView> {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  54.               AllowDrop="True"
  55.               DragDrop.Drop="treeView_Drop"
  56.               DragDrop.DragOver="treeView_DragOver"
  57.               DragDrop.DragEnter="treeView_DragEnter"
  58.               DragDrop.DragLeave="treeView_DragLeave" >   
  59.     </TreeView>    <TreeView x:Name="treeView"               
  60.               AllowDrop="True"
  61.               DragDrop.Drop="treeView_Drop"
  62.               DragDrop.DragOver="treeView_DragOver"
  63.               DragDrop.DragEnter="treeView_DragEnter"
  64.               DragDrop.DragLeave="treeView_DragLeave" >   
  65.     </TreeView>   
  66.     <TreeView x:Name="treeView"               
  67.               AllowDrop="True"
  68.               DragDrop.Drop="treeView_Drop"
  69.               DragDrop.DragOver="treeView_DragOver"
  70.               DragDrop.DragEnter="treeView_DragEnter"
  71.               DragDrop.DragLeave="treeView_DragLeave" >   
  72.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  73.     </ListView>if (e.OriginalSource is TextBlock txtTitle)    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  74.               AllowDrop="True"
  75.               DragDrop.Drop="treeView_Drop"
  76.               DragDrop.DragOver="treeView_DragOver"
  77.               DragDrop.DragEnter="treeView_DragEnter"
  78.               DragDrop.DragLeave="treeView_DragLeave" >   
  79.     </TreeView>    <TreeView x:Name="treeView"               
  80.               AllowDrop="True"
  81.               DragDrop.Drop="treeView_Drop"
  82.               DragDrop.DragOver="treeView_DragOver"
  83.               DragDrop.DragEnter="treeView_DragEnter"
  84.               DragDrop.DragLeave="treeView_DragLeave" >   
  85.     </TreeView>   
  86.     <TreeView x:Name="treeView"               
  87.               AllowDrop="True"
  88.               DragDrop.Drop="treeView_Drop"
  89.               DragDrop.DragOver="treeView_DragOver"
  90.               DragDrop.DragEnter="treeView_DragEnter"
  91.               DragDrop.DragLeave="treeView_DragLeave" >   
  92.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  93.     </ListView>{    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  94.               AllowDrop="True"
  95.               DragDrop.Drop="treeView_Drop"
  96.               DragDrop.DragOver="treeView_DragOver"
  97.               DragDrop.DragEnter="treeView_DragEnter"
  98.               DragDrop.DragLeave="treeView_DragLeave" >   
  99.     </TreeView>    <TreeView x:Name="treeView"               
  100.               AllowDrop="True"
  101.               DragDrop.Drop="treeView_Drop"
  102.               DragDrop.DragOver="treeView_DragOver"
  103.               DragDrop.DragEnter="treeView_DragEnter"
  104.               DragDrop.DragLeave="treeView_DragLeave" >   
  105.     </TreeView>   
  106.     <TreeView x:Name="treeView"               
  107.               AllowDrop="True"
  108.               DragDrop.Drop="treeView_Drop"
  109.               DragDrop.DragOver="treeView_DragOver"
  110.               DragDrop.DragEnter="treeView_DragEnter"
  111.               DragDrop.DragLeave="treeView_DragLeave" >   
  112.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  113.     </ListView>    if (txtTitle.Tag is Excerpt toExcerpt)    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  114.               AllowDrop="True"
  115.               DragDrop.Drop="treeView_Drop"
  116.               DragDrop.DragOver="treeView_DragOver"
  117.               DragDrop.DragEnter="treeView_DragEnter"
  118.               DragDrop.DragLeave="treeView_DragLeave" >   
  119.     </TreeView>    <TreeView x:Name="treeView"               
  120.               AllowDrop="True"
  121.               DragDrop.Drop="treeView_Drop"
  122.               DragDrop.DragOver="treeView_DragOver"
  123.               DragDrop.DragEnter="treeView_DragEnter"
  124.               DragDrop.DragLeave="treeView_DragLeave" >   
  125.     </TreeView>   
  126.     <TreeView x:Name="treeView"               
  127.               AllowDrop="True"
  128.               DragDrop.Drop="treeView_Drop"
  129.               DragDrop.DragOver="treeView_DragOver"
  130.               DragDrop.DragEnter="treeView_DragEnter"
  131.               DragDrop.DragLeave="treeView_DragLeave" >   
  132.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  133.     </ListView>    {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  134.               AllowDrop="True"
  135.               DragDrop.Drop="treeView_Drop"
  136.               DragDrop.DragOver="treeView_DragOver"
  137.               DragDrop.DragEnter="treeView_DragEnter"
  138.               DragDrop.DragLeave="treeView_DragLeave" >   
  139.     </TreeView>    <TreeView x:Name="treeView"               
  140.               AllowDrop="True"
  141.               DragDrop.Drop="treeView_Drop"
  142.               DragDrop.DragOver="treeView_DragOver"
  143.               DragDrop.DragEnter="treeView_DragEnter"
  144.               DragDrop.DragLeave="treeView_DragLeave" >   
  145.     </TreeView>   
  146.     <TreeView x:Name="treeView"               
  147.               AllowDrop="True"
  148.               DragDrop.Drop="treeView_Drop"
  149.               DragDrop.DragOver="treeView_DragOver"
  150.               DragDrop.DragEnter="treeView_DragEnter"
  151.               DragDrop.DragLeave="treeView_DragLeave" >   
  152.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  153.     </ListView>        if (CanDrop(fromListNode.Excerpt, toExcerpt))  //业务判断    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  154.               AllowDrop="True"
  155.               DragDrop.Drop="treeView_Drop"
  156.               DragDrop.DragOver="treeView_DragOver"
  157.               DragDrop.DragEnter="treeView_DragEnter"
  158.               DragDrop.DragLeave="treeView_DragLeave" >   
  159.     </TreeView>    <TreeView x:Name="treeView"               
  160.               AllowDrop="True"
  161.               DragDrop.Drop="treeView_Drop"
  162.               DragDrop.DragOver="treeView_DragOver"
  163.               DragDrop.DragEnter="treeView_DragEnter"
  164.               DragDrop.DragLeave="treeView_DragLeave" >   
  165.     </TreeView>   
  166.     <TreeView x:Name="treeView"               
  167.               AllowDrop="True"
  168.               DragDrop.Drop="treeView_Drop"
  169.               DragDrop.DragOver="treeView_DragOver"
  170.               DragDrop.DragEnter="treeView_DragEnter"
  171.               DragDrop.DragLeave="treeView_DragLeave" >   
  172.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  173.     </ListView>        {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  174.               AllowDrop="True"
  175.               DragDrop.Drop="treeView_Drop"
  176.               DragDrop.DragOver="treeView_DragOver"
  177.               DragDrop.DragEnter="treeView_DragEnter"
  178.               DragDrop.DragLeave="treeView_DragLeave" >   
  179.     </TreeView>    <TreeView x:Name="treeView"               
  180.               AllowDrop="True"
  181.               DragDrop.Drop="treeView_Drop"
  182.               DragDrop.DragOver="treeView_DragOver"
  183.               DragDrop.DragEnter="treeView_DragEnter"
  184.               DragDrop.DragLeave="treeView_DragLeave" >   
  185.     </TreeView>   
  186.     <TreeView x:Name="treeView"               
  187.               AllowDrop="True"
  188.               DragDrop.Drop="treeView_Drop"
  189.               DragDrop.DragOver="treeView_DragOver"
  190.               DragDrop.DragEnter="treeView_DragEnter"
  191.               DragDrop.DragLeave="treeView_DragLeave" >   
  192.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  193.     </ListView>    <TreeView x:Name="treeView"               
  194.               AllowDrop="True"
  195.               DragDrop.Drop="treeView_Drop"
  196.               DragDrop.DragOver="treeView_DragOver"
  197.               DragDrop.DragEnter="treeView_DragEnter"
  198.               DragDrop.DragLeave="treeView_DragLeave" >   
  199.     </TreeView> e.Effects = DragDropEffects.Move;    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  200.               AllowDrop="True"
  201.               DragDrop.Drop="treeView_Drop"
  202.               DragDrop.DragOver="treeView_DragOver"
  203.               DragDrop.DragEnter="treeView_DragEnter"
  204.               DragDrop.DragLeave="treeView_DragLeave" >   
  205.     </TreeView>    <TreeView x:Name="treeView"               
  206.               AllowDrop="True"
  207.               DragDrop.Drop="treeView_Drop"
  208.               DragDrop.DragOver="treeView_DragOver"
  209.               DragDrop.DragEnter="treeView_DragEnter"
  210.               DragDrop.DragLeave="treeView_DragLeave" >   
  211.     </TreeView>   
  212.     <TreeView x:Name="treeView"               
  213.               AllowDrop="True"
  214.               DragDrop.Drop="treeView_Drop"
  215.               DragDrop.DragOver="treeView_DragOver"
  216.               DragDrop.DragEnter="treeView_DragEnter"
  217.               DragDrop.DragLeave="treeView_DragLeave" >   
  218.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  219.     </ListView>        }    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  220.               AllowDrop="True"
  221.               DragDrop.Drop="treeView_Drop"
  222.               DragDrop.DragOver="treeView_DragOver"
  223.               DragDrop.DragEnter="treeView_DragEnter"
  224.               DragDrop.DragLeave="treeView_DragLeave" >   
  225.     </TreeView>    <TreeView x:Name="treeView"               
  226.               AllowDrop="True"
  227.               DragDrop.Drop="treeView_Drop"
  228.               DragDrop.DragOver="treeView_DragOver"
  229.               DragDrop.DragEnter="treeView_DragEnter"
  230.               DragDrop.DragLeave="treeView_DragLeave" >   
  231.     </TreeView>   
  232.     <TreeView x:Name="treeView"               
  233.               AllowDrop="True"
  234.               DragDrop.Drop="treeView_Drop"
  235.               DragDrop.DragOver="treeView_DragOver"
  236.               DragDrop.DragEnter="treeView_DragEnter"
  237.               DragDrop.DragLeave="treeView_DragLeave" >   
  238.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  239.     </ListView>    }    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  240.               AllowDrop="True"
  241.               DragDrop.Drop="treeView_Drop"
  242.               DragDrop.DragOver="treeView_DragOver"
  243.               DragDrop.DragEnter="treeView_DragEnter"
  244.               DragDrop.DragLeave="treeView_DragLeave" >   
  245.     </TreeView>    <TreeView x:Name="treeView"               
  246.               AllowDrop="True"
  247.               DragDrop.Drop="treeView_Drop"
  248.               DragDrop.DragOver="treeView_DragOver"
  249.               DragDrop.DragEnter="treeView_DragEnter"
  250.               DragDrop.DragLeave="treeView_DragLeave" >   
  251.     </TreeView>   
  252.     <TreeView x:Name="treeView"               
  253.               AllowDrop="True"
  254.               DragDrop.Drop="treeView_Drop"
  255.               DragDrop.DragOver="treeView_DragOver"
  256.               DragDrop.DragEnter="treeView_DragEnter"
  257.               DragDrop.DragLeave="treeView_DragLeave" >   
  258.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  259.     </ListView>}    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  260.               AllowDrop="True"
  261.               DragDrop.Drop="treeView_Drop"
  262.               DragDrop.DragOver="treeView_DragOver"
  263.               DragDrop.DragEnter="treeView_DragEnter"
  264.               DragDrop.DragLeave="treeView_DragLeave" >   
  265.     </TreeView>    <TreeView x:Name="treeView"               
  266.               AllowDrop="True"
  267.               DragDrop.Drop="treeView_Drop"
  268.               DragDrop.DragOver="treeView_DragOver"
  269.               DragDrop.DragEnter="treeView_DragEnter"
  270.               DragDrop.DragLeave="treeView_DragLeave" >   
  271.     </TreeView>   
  272.     <TreeView x:Name="treeView"               
  273.               AllowDrop="True"
  274.               DragDrop.Drop="treeView_Drop"
  275.               DragDrop.DragOver="treeView_DragOver"
  276.               DragDrop.DragEnter="treeView_DragEnter"
  277.               DragDrop.DragLeave="treeView_DragLeave" >   
  278.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  279.     </ListView>    <TreeView x:Name="treeView"               
  280.               AllowDrop="True"
  281.               DragDrop.Drop="treeView_Drop"
  282.               DragDrop.DragOver="treeView_DragOver"
  283.               DragDrop.DragEnter="treeView_DragEnter"
  284.               DragDrop.DragLeave="treeView_DragLeave" >   
  285.     </TreeView>}    <TreeView x:Name="treeView"               
  286.               AllowDrop="True"
  287.               DragDrop.Drop="treeView_Drop"
  288.               DragDrop.DragOver="treeView_DragOver"
  289.               DragDrop.DragEnter="treeView_DragEnter"
  290.               DragDrop.DragLeave="treeView_DragLeave" >   
  291.     </TreeView>  e.Handled = true;        }
复制代码
  
装饰器
如果拖动时,有下面这样的一个标签跟随鼠标移动,其显示内容是拖动对象的Title,效果就更好了。

这个就需要通过装饰器来实现。
关于装饰器的介绍:装饰器概述 - WPF .NET Framework | Microsoft Docs
首先我们建一个装饰器对象DragTitleAdorner
  1.     public class DragTitleAdorner : Adorner    {        private readonly ContentPresenter _contentPresenter;        private Control Control        {    <TreeView x:Name="treeView"               
  2.               AllowDrop="True"
  3.               DragDrop.Drop="treeView_Drop"
  4.               DragDrop.DragOver="treeView_DragOver"
  5.               DragDrop.DragEnter="treeView_DragEnter"
  6.               DragDrop.DragLeave="treeView_DragLeave" >   
  7.     </TreeView> get    <TreeView x:Name="treeView"               
  8.               AllowDrop="True"
  9.               DragDrop.Drop="treeView_Drop"
  10.               DragDrop.DragOver="treeView_DragOver"
  11.               DragDrop.DragEnter="treeView_DragEnter"
  12.               DragDrop.DragLeave="treeView_DragLeave" >   
  13.     </TreeView> {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  14.               AllowDrop="True"
  15.               DragDrop.Drop="treeView_Drop"
  16.               DragDrop.DragOver="treeView_DragOver"
  17.               DragDrop.DragEnter="treeView_DragEnter"
  18.               DragDrop.DragLeave="treeView_DragLeave" >   
  19.     </TreeView>    <TreeView x:Name="treeView"               
  20.               AllowDrop="True"
  21.               DragDrop.Drop="treeView_Drop"
  22.               DragDrop.DragOver="treeView_DragOver"
  23.               DragDrop.DragEnter="treeView_DragEnter"
  24.               DragDrop.DragLeave="treeView_DragLeave" >   
  25.     </TreeView>   
  26.     <TreeView x:Name="treeView"               
  27.               AllowDrop="True"
  28.               DragDrop.Drop="treeView_Drop"
  29.               DragDrop.DragOver="treeView_DragOver"
  30.               DragDrop.DragEnter="treeView_DragEnter"
  31.               DragDrop.DragLeave="treeView_DragLeave" >   
  32.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  33.     </ListView>return (Control)this.AdornedElement;    <TreeView x:Name="treeView"               
  34.               AllowDrop="True"
  35.               DragDrop.Drop="treeView_Drop"
  36.               DragDrop.DragOver="treeView_DragOver"
  37.               DragDrop.DragEnter="treeView_DragEnter"
  38.               DragDrop.DragLeave="treeView_DragLeave" >   
  39.     </TreeView> }        }        public DragTitleAdorner(UIElement adornedElement, Point pos, string? Title = "") : base(adornedElement)        {    <TreeView x:Name="treeView"               
  40.               AllowDrop="True"
  41.               DragDrop.Drop="treeView_Drop"
  42.               DragDrop.DragOver="treeView_DragOver"
  43.               DragDrop.DragEnter="treeView_DragEnter"
  44.               DragDrop.DragLeave="treeView_DragLeave" >   
  45.     </TreeView> IsHitTestVisible = false;    <TreeView x:Name="treeView"               
  46.               AllowDrop="True"
  47.               DragDrop.Drop="treeView_Drop"
  48.               DragDrop.DragOver="treeView_DragOver"
  49.               DragDrop.DragEnter="treeView_DragEnter"
  50.               DragDrop.DragLeave="treeView_DragLeave" >   
  51.     </TreeView> int width = 22;    <TreeView x:Name="treeView"               
  52.               AllowDrop="True"
  53.               DragDrop.Drop="treeView_Drop"
  54.               DragDrop.DragOver="treeView_DragOver"
  55.               DragDrop.DragEnter="treeView_DragEnter"
  56.               DragDrop.DragLeave="treeView_DragLeave" >   
  57.     </TreeView> if (Title != null)    <TreeView x:Name="treeView"               
  58.               AllowDrop="True"
  59.               DragDrop.Drop="treeView_Drop"
  60.               DragDrop.DragOver="treeView_DragOver"
  61.               DragDrop.DragEnter="treeView_DragEnter"
  62.               DragDrop.DragLeave="treeView_DragLeave" >   
  63.     </TreeView> {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  64.               AllowDrop="True"
  65.               DragDrop.Drop="treeView_Drop"
  66.               DragDrop.DragOver="treeView_DragOver"
  67.               DragDrop.DragEnter="treeView_DragEnter"
  68.               DragDrop.DragLeave="treeView_DragLeave" >   
  69.     </TreeView>    <TreeView x:Name="treeView"               
  70.               AllowDrop="True"
  71.               DragDrop.Drop="treeView_Drop"
  72.               DragDrop.DragOver="treeView_DragOver"
  73.               DragDrop.DragEnter="treeView_DragEnter"
  74.               DragDrop.DragLeave="treeView_DragLeave" >   
  75.     </TreeView>   
  76.     <TreeView x:Name="treeView"               
  77.               AllowDrop="True"
  78.               DragDrop.Drop="treeView_Drop"
  79.               DragDrop.DragOver="treeView_DragOver"
  80.               DragDrop.DragEnter="treeView_DragEnter"
  81.               DragDrop.DragLeave="treeView_DragLeave" >   
  82.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  83.     </ListView>width += (int)MeasureTextWidth(Title, 14, "宋体");    <TreeView x:Name="treeView"               
  84.               AllowDrop="True"
  85.               DragDrop.Drop="treeView_Drop"
  86.               DragDrop.DragOver="treeView_DragOver"
  87.               DragDrop.DragEnter="treeView_DragEnter"
  88.               DragDrop.DragLeave="treeView_DragLeave" >   
  89.     </TreeView> }    <TreeView x:Name="treeView"               
  90.               AllowDrop="True"
  91.               DragDrop.Drop="treeView_Drop"
  92.               DragDrop.DragOver="treeView_DragOver"
  93.               DragDrop.DragEnter="treeView_DragEnter"
  94.               DragDrop.DragLeave="treeView_DragLeave" >   
  95.     </TreeView> this._contentPresenter = new ContentPresenter    <TreeView x:Name="treeView"               
  96.               AllowDrop="True"
  97.               DragDrop.Drop="treeView_Drop"
  98.               DragDrop.DragOver="treeView_DragOver"
  99.               DragDrop.DragEnter="treeView_DragEnter"
  100.               DragDrop.DragLeave="treeView_DragLeave" >   
  101.     </TreeView> {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  102.               AllowDrop="True"
  103.               DragDrop.Drop="treeView_Drop"
  104.               DragDrop.DragOver="treeView_DragOver"
  105.               DragDrop.DragEnter="treeView_DragEnter"
  106.               DragDrop.DragLeave="treeView_DragLeave" >   
  107.     </TreeView>    <TreeView x:Name="treeView"               
  108.               AllowDrop="True"
  109.               DragDrop.Drop="treeView_Drop"
  110.               DragDrop.DragOver="treeView_DragOver"
  111.               DragDrop.DragEnter="treeView_DragEnter"
  112.               DragDrop.DragLeave="treeView_DragLeave" >   
  113.     </TreeView>   
  114.     <TreeView x:Name="treeView"               
  115.               AllowDrop="True"
  116.               DragDrop.Drop="treeView_Drop"
  117.               DragDrop.DragOver="treeView_DragOver"
  118.               DragDrop.DragEnter="treeView_DragEnter"
  119.               DragDrop.DragLeave="treeView_DragLeave" >   
  120.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  121.     </ListView>Content = new Border    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  122.               AllowDrop="True"
  123.               DragDrop.Drop="treeView_Drop"
  124.               DragDrop.DragOver="treeView_DragOver"
  125.               DragDrop.DragEnter="treeView_DragEnter"
  126.               DragDrop.DragLeave="treeView_DragLeave" >   
  127.     </TreeView>    <TreeView x:Name="treeView"               
  128.               AllowDrop="True"
  129.               DragDrop.Drop="treeView_Drop"
  130.               DragDrop.DragOver="treeView_DragOver"
  131.               DragDrop.DragEnter="treeView_DragEnter"
  132.               DragDrop.DragLeave="treeView_DragLeave" >   
  133.     </TreeView>   
  134.     <TreeView x:Name="treeView"               
  135.               AllowDrop="True"
  136.               DragDrop.Drop="treeView_Drop"
  137.               DragDrop.DragOver="treeView_DragOver"
  138.               DragDrop.DragEnter="treeView_DragEnter"
  139.               DragDrop.DragLeave="treeView_DragLeave" >   
  140.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  141.     </ListView>{    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  142.               AllowDrop="True"
  143.               DragDrop.Drop="treeView_Drop"
  144.               DragDrop.DragOver="treeView_DragOver"
  145.               DragDrop.DragEnter="treeView_DragEnter"
  146.               DragDrop.DragLeave="treeView_DragLeave" >   
  147.     </TreeView>    <TreeView x:Name="treeView"               
  148.               AllowDrop="True"
  149.               DragDrop.Drop="treeView_Drop"
  150.               DragDrop.DragOver="treeView_DragOver"
  151.               DragDrop.DragEnter="treeView_DragEnter"
  152.               DragDrop.DragLeave="treeView_DragLeave" >   
  153.     </TreeView>   
  154.     <TreeView x:Name="treeView"               
  155.               AllowDrop="True"
  156.               DragDrop.Drop="treeView_Drop"
  157.               DragDrop.DragOver="treeView_DragOver"
  158.               DragDrop.DragEnter="treeView_DragEnter"
  159.               DragDrop.DragLeave="treeView_DragLeave" >   
  160.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  161.     </ListView>    Background = Brushes.SteelBlue,    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  162.               AllowDrop="True"
  163.               DragDrop.Drop="treeView_Drop"
  164.               DragDrop.DragOver="treeView_DragOver"
  165.               DragDrop.DragEnter="treeView_DragEnter"
  166.               DragDrop.DragLeave="treeView_DragLeave" >   
  167.     </TreeView>    <TreeView x:Name="treeView"               
  168.               AllowDrop="True"
  169.               DragDrop.Drop="treeView_Drop"
  170.               DragDrop.DragOver="treeView_DragOver"
  171.               DragDrop.DragEnter="treeView_DragEnter"
  172.               DragDrop.DragLeave="treeView_DragLeave" >   
  173.     </TreeView>   
  174.     <TreeView x:Name="treeView"               
  175.               AllowDrop="True"
  176.               DragDrop.Drop="treeView_Drop"
  177.               DragDrop.DragOver="treeView_DragOver"
  178.               DragDrop.DragEnter="treeView_DragEnter"
  179.               DragDrop.DragLeave="treeView_DragLeave" >   
  180.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  181.     </ListView>    Width = width,    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  182.               AllowDrop="True"
  183.               DragDrop.Drop="treeView_Drop"
  184.               DragDrop.DragOver="treeView_DragOver"
  185.               DragDrop.DragEnter="treeView_DragEnter"
  186.               DragDrop.DragLeave="treeView_DragLeave" >   
  187.     </TreeView>    <TreeView x:Name="treeView"               
  188.               AllowDrop="True"
  189.               DragDrop.Drop="treeView_Drop"
  190.               DragDrop.DragOver="treeView_DragOver"
  191.               DragDrop.DragEnter="treeView_DragEnter"
  192.               DragDrop.DragLeave="treeView_DragLeave" >   
  193.     </TreeView>   
  194.     <TreeView x:Name="treeView"               
  195.               AllowDrop="True"
  196.               DragDrop.Drop="treeView_Drop"
  197.               DragDrop.DragOver="treeView_DragOver"
  198.               DragDrop.DragEnter="treeView_DragEnter"
  199.               DragDrop.DragLeave="treeView_DragLeave" >   
  200.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  201.     </ListView>    Height = 28,    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  202.               AllowDrop="True"
  203.               DragDrop.Drop="treeView_Drop"
  204.               DragDrop.DragOver="treeView_DragOver"
  205.               DragDrop.DragEnter="treeView_DragEnter"
  206.               DragDrop.DragLeave="treeView_DragLeave" >   
  207.     </TreeView>    <TreeView x:Name="treeView"               
  208.               AllowDrop="True"
  209.               DragDrop.Drop="treeView_Drop"
  210.               DragDrop.DragOver="treeView_DragOver"
  211.               DragDrop.DragEnter="treeView_DragEnter"
  212.               DragDrop.DragLeave="treeView_DragLeave" >   
  213.     </TreeView>   
  214.     <TreeView x:Name="treeView"               
  215.               AllowDrop="True"
  216.               DragDrop.Drop="treeView_Drop"
  217.               DragDrop.DragOver="treeView_DragOver"
  218.               DragDrop.DragEnter="treeView_DragEnter"
  219.               DragDrop.DragLeave="treeView_DragLeave" >   
  220.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  221.     </ListView>    BorderBrush = Brushes.Gray,    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  222.               AllowDrop="True"
  223.               DragDrop.Drop="treeView_Drop"
  224.               DragDrop.DragOver="treeView_DragOver"
  225.               DragDrop.DragEnter="treeView_DragEnter"
  226.               DragDrop.DragLeave="treeView_DragLeave" >   
  227.     </TreeView>    <TreeView x:Name="treeView"               
  228.               AllowDrop="True"
  229.               DragDrop.Drop="treeView_Drop"
  230.               DragDrop.DragOver="treeView_DragOver"
  231.               DragDrop.DragEnter="treeView_DragEnter"
  232.               DragDrop.DragLeave="treeView_DragLeave" >   
  233.     </TreeView>   
  234.     <TreeView x:Name="treeView"               
  235.               AllowDrop="True"
  236.               DragDrop.Drop="treeView_Drop"
  237.               DragDrop.DragOver="treeView_DragOver"
  238.               DragDrop.DragEnter="treeView_DragEnter"
  239.               DragDrop.DragLeave="treeView_DragLeave" >   
  240.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  241.     </ListView>    BorderThickness = new Thickness(1),    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  242.               AllowDrop="True"
  243.               DragDrop.Drop="treeView_Drop"
  244.               DragDrop.DragOver="treeView_DragOver"
  245.               DragDrop.DragEnter="treeView_DragEnter"
  246.               DragDrop.DragLeave="treeView_DragLeave" >   
  247.     </TreeView>    <TreeView x:Name="treeView"               
  248.               AllowDrop="True"
  249.               DragDrop.Drop="treeView_Drop"
  250.               DragDrop.DragOver="treeView_DragOver"
  251.               DragDrop.DragEnter="treeView_DragEnter"
  252.               DragDrop.DragLeave="treeView_DragLeave" >   
  253.     </TreeView>   
  254.     <TreeView x:Name="treeView"               
  255.               AllowDrop="True"
  256.               DragDrop.Drop="treeView_Drop"
  257.               DragDrop.DragOver="treeView_DragOver"
  258.               DragDrop.DragEnter="treeView_DragEnter"
  259.               DragDrop.DragLeave="treeView_DragLeave" >   
  260.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  261.     </ListView>    HorizontalAlignment = HorizontalAlignment.Left,    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  262.               AllowDrop="True"
  263.               DragDrop.Drop="treeView_Drop"
  264.               DragDrop.DragOver="treeView_DragOver"
  265.               DragDrop.DragEnter="treeView_DragEnter"
  266.               DragDrop.DragLeave="treeView_DragLeave" >   
  267.     </TreeView>    <TreeView x:Name="treeView"               
  268.               AllowDrop="True"
  269.               DragDrop.Drop="treeView_Drop"
  270.               DragDrop.DragOver="treeView_DragOver"
  271.               DragDrop.DragEnter="treeView_DragEnter"
  272.               DragDrop.DragLeave="treeView_DragLeave" >   
  273.     </TreeView>   
  274.     <TreeView x:Name="treeView"               
  275.               AllowDrop="True"
  276.               DragDrop.Drop="treeView_Drop"
  277.               DragDrop.DragOver="treeView_DragOver"
  278.               DragDrop.DragEnter="treeView_DragEnter"
  279.               DragDrop.DragLeave="treeView_DragLeave" >   
  280.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  281.     </ListView>    VerticalAlignment = VerticalAlignment.Top,    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  282.               AllowDrop="True"
  283.               DragDrop.Drop="treeView_Drop"
  284.               DragDrop.DragOver="treeView_DragOver"
  285.               DragDrop.DragEnter="treeView_DragEnter"
  286.               DragDrop.DragLeave="treeView_DragLeave" >   
  287.     </TreeView>    <TreeView x:Name="treeView"               
  288.               AllowDrop="True"
  289.               DragDrop.Drop="treeView_Drop"
  290.               DragDrop.DragOver="treeView_DragOver"
  291.               DragDrop.DragEnter="treeView_DragEnter"
  292.               DragDrop.DragLeave="treeView_DragLeave" >   
  293.     </TreeView>   
  294.     <TreeView x:Name="treeView"               
  295.               AllowDrop="True"
  296.               DragDrop.Drop="treeView_Drop"
  297.               DragDrop.DragOver="treeView_DragOver"
  298.               DragDrop.DragEnter="treeView_DragEnter"
  299.               DragDrop.DragLeave="treeView_DragLeave" >   
  300.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  301.     </ListView>    CornerRadius= new CornerRadius(5),    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  302.               AllowDrop="True"
  303.               DragDrop.Drop="treeView_Drop"
  304.               DragDrop.DragOver="treeView_DragOver"
  305.               DragDrop.DragEnter="treeView_DragEnter"
  306.               DragDrop.DragLeave="treeView_DragLeave" >   
  307.     </TreeView>    <TreeView x:Name="treeView"               
  308.               AllowDrop="True"
  309.               DragDrop.Drop="treeView_Drop"
  310.               DragDrop.DragOver="treeView_DragOver"
  311.               DragDrop.DragEnter="treeView_DragEnter"
  312.               DragDrop.DragLeave="treeView_DragLeave" >   
  313.     </TreeView>   
  314.     <TreeView x:Name="treeView"               
  315.               AllowDrop="True"
  316.               DragDrop.Drop="treeView_Drop"
  317.               DragDrop.DragOver="treeView_DragOver"
  318.               DragDrop.DragEnter="treeView_DragEnter"
  319.               DragDrop.DragLeave="treeView_DragLeave" >   
  320.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  321.     </ListView>    Child = new TextBlock    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  322.               AllowDrop="True"
  323.               DragDrop.Drop="treeView_Drop"
  324.               DragDrop.DragOver="treeView_DragOver"
  325.               DragDrop.DragEnter="treeView_DragEnter"
  326.               DragDrop.DragLeave="treeView_DragLeave" >   
  327.     </TreeView>    <TreeView x:Name="treeView"               
  328.               AllowDrop="True"
  329.               DragDrop.Drop="treeView_Drop"
  330.               DragDrop.DragOver="treeView_DragOver"
  331.               DragDrop.DragEnter="treeView_DragEnter"
  332.               DragDrop.DragLeave="treeView_DragLeave" >   
  333.     </TreeView>   
  334.     <TreeView x:Name="treeView"               
  335.               AllowDrop="True"
  336.               DragDrop.Drop="treeView_Drop"
  337.               DragDrop.DragOver="treeView_DragOver"
  338.               DragDrop.DragEnter="treeView_DragEnter"
  339.               DragDrop.DragLeave="treeView_DragLeave" >   
  340.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  341.     </ListView>    {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  342.               AllowDrop="True"
  343.               DragDrop.Drop="treeView_Drop"
  344.               DragDrop.DragOver="treeView_DragOver"
  345.               DragDrop.DragEnter="treeView_DragEnter"
  346.               DragDrop.DragLeave="treeView_DragLeave" >   
  347.     </TreeView>    <TreeView x:Name="treeView"               
  348.               AllowDrop="True"
  349.               DragDrop.Drop="treeView_Drop"
  350.               DragDrop.DragOver="treeView_DragOver"
  351.               DragDrop.DragEnter="treeView_DragEnter"
  352.               DragDrop.DragLeave="treeView_DragLeave" >   
  353.     </TreeView>   
  354.     <TreeView x:Name="treeView"               
  355.               AllowDrop="True"
  356.               DragDrop.Drop="treeView_Drop"
  357.               DragDrop.DragOver="treeView_DragOver"
  358.               DragDrop.DragEnter="treeView_DragEnter"
  359.               DragDrop.DragLeave="treeView_DragLeave" >   
  360.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  361.     </ListView>        Text = Title,    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  362.               AllowDrop="True"
  363.               DragDrop.Drop="treeView_Drop"
  364.               DragDrop.DragOver="treeView_DragOver"
  365.               DragDrop.DragEnter="treeView_DragEnter"
  366.               DragDrop.DragLeave="treeView_DragLeave" >   
  367.     </TreeView>    <TreeView x:Name="treeView"               
  368.               AllowDrop="True"
  369.               DragDrop.Drop="treeView_Drop"
  370.               DragDrop.DragOver="treeView_DragOver"
  371.               DragDrop.DragEnter="treeView_DragEnter"
  372.               DragDrop.DragLeave="treeView_DragLeave" >   
  373.     </TreeView>   
  374.     <TreeView x:Name="treeView"               
  375.               AllowDrop="True"
  376.               DragDrop.Drop="treeView_Drop"
  377.               DragDrop.DragOver="treeView_DragOver"
  378.               DragDrop.DragEnter="treeView_DragEnter"
  379.               DragDrop.DragLeave="treeView_DragLeave" >   
  380.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  381.     </ListView>        FontSize = 14,    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  382.               AllowDrop="True"
  383.               DragDrop.Drop="treeView_Drop"
  384.               DragDrop.DragOver="treeView_DragOver"
  385.               DragDrop.DragEnter="treeView_DragEnter"
  386.               DragDrop.DragLeave="treeView_DragLeave" >   
  387.     </TreeView>    <TreeView x:Name="treeView"               
  388.               AllowDrop="True"
  389.               DragDrop.Drop="treeView_Drop"
  390.               DragDrop.DragOver="treeView_DragOver"
  391.               DragDrop.DragEnter="treeView_DragEnter"
  392.               DragDrop.DragLeave="treeView_DragLeave" >   
  393.     </TreeView>   
  394.     <TreeView x:Name="treeView"               
  395.               AllowDrop="True"
  396.               DragDrop.Drop="treeView_Drop"
  397.               DragDrop.DragOver="treeView_DragOver"
  398.               DragDrop.DragEnter="treeView_DragEnter"
  399.               DragDrop.DragLeave="treeView_DragLeave" >   
  400.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  401.     </ListView>        FontFamily= new FontFamily("宋体"),    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  402.               AllowDrop="True"
  403.               DragDrop.Drop="treeView_Drop"
  404.               DragDrop.DragOver="treeView_DragOver"
  405.               DragDrop.DragEnter="treeView_DragEnter"
  406.               DragDrop.DragLeave="treeView_DragLeave" >   
  407.     </TreeView>    <TreeView x:Name="treeView"               
  408.               AllowDrop="True"
  409.               DragDrop.Drop="treeView_Drop"
  410.               DragDrop.DragOver="treeView_DragOver"
  411.               DragDrop.DragEnter="treeView_DragEnter"
  412.               DragDrop.DragLeave="treeView_DragLeave" >   
  413.     </TreeView>   
  414.     <TreeView x:Name="treeView"               
  415.               AllowDrop="True"
  416.               DragDrop.Drop="treeView_Drop"
  417.               DragDrop.DragOver="treeView_DragOver"
  418.               DragDrop.DragEnter="treeView_DragEnter"
  419.               DragDrop.DragLeave="treeView_DragLeave" >   
  420.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  421.     </ListView>        Foreground = Brushes.White,    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  422.               AllowDrop="True"
  423.               DragDrop.Drop="treeView_Drop"
  424.               DragDrop.DragOver="treeView_DragOver"
  425.               DragDrop.DragEnter="treeView_DragEnter"
  426.               DragDrop.DragLeave="treeView_DragLeave" >   
  427.     </TreeView>    <TreeView x:Name="treeView"               
  428.               AllowDrop="True"
  429.               DragDrop.Drop="treeView_Drop"
  430.               DragDrop.DragOver="treeView_DragOver"
  431.               DragDrop.DragEnter="treeView_DragEnter"
  432.               DragDrop.DragLeave="treeView_DragLeave" >   
  433.     </TreeView>   
  434.     <TreeView x:Name="treeView"               
  435.               AllowDrop="True"
  436.               DragDrop.Drop="treeView_Drop"
  437.               DragDrop.DragOver="treeView_DragOver"
  438.               DragDrop.DragEnter="treeView_DragEnter"
  439.               DragDrop.DragLeave="treeView_DragLeave" >   
  440.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  441.     </ListView>        HorizontalAlignment = HorizontalAlignment.Left,    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  442.               AllowDrop="True"
  443.               DragDrop.Drop="treeView_Drop"
  444.               DragDrop.DragOver="treeView_DragOver"
  445.               DragDrop.DragEnter="treeView_DragEnter"
  446.               DragDrop.DragLeave="treeView_DragLeave" >   
  447.     </TreeView>    <TreeView x:Name="treeView"               
  448.               AllowDrop="True"
  449.               DragDrop.Drop="treeView_Drop"
  450.               DragDrop.DragOver="treeView_DragOver"
  451.               DragDrop.DragEnter="treeView_DragEnter"
  452.               DragDrop.DragLeave="treeView_DragLeave" >   
  453.     </TreeView>   
  454.     <TreeView x:Name="treeView"               
  455.               AllowDrop="True"
  456.               DragDrop.Drop="treeView_Drop"
  457.               DragDrop.DragOver="treeView_DragOver"
  458.               DragDrop.DragEnter="treeView_DragEnter"
  459.               DragDrop.DragLeave="treeView_DragLeave" >   
  460.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  461.     </ListView>        VerticalAlignment = VerticalAlignment.Center,    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  462.               AllowDrop="True"
  463.               DragDrop.Drop="treeView_Drop"
  464.               DragDrop.DragOver="treeView_DragOver"
  465.               DragDrop.DragEnter="treeView_DragEnter"
  466.               DragDrop.DragLeave="treeView_DragLeave" >   
  467.     </TreeView>    <TreeView x:Name="treeView"               
  468.               AllowDrop="True"
  469.               DragDrop.Drop="treeView_Drop"
  470.               DragDrop.DragOver="treeView_DragOver"
  471.               DragDrop.DragEnter="treeView_DragEnter"
  472.               DragDrop.DragLeave="treeView_DragLeave" >   
  473.     </TreeView>   
  474.     <TreeView x:Name="treeView"               
  475.               AllowDrop="True"
  476.               DragDrop.Drop="treeView_Drop"
  477.               DragDrop.DragOver="treeView_DragOver"
  478.               DragDrop.DragEnter="treeView_DragEnter"
  479.               DragDrop.DragLeave="treeView_DragLeave" >   
  480.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  481.     </ListView>        Margin = new Thickness(10, 0, 0, 0),    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  482.               AllowDrop="True"
  483.               DragDrop.Drop="treeView_Drop"
  484.               DragDrop.DragOver="treeView_DragOver"
  485.               DragDrop.DragEnter="treeView_DragEnter"
  486.               DragDrop.DragLeave="treeView_DragLeave" >   
  487.     </TreeView>    <TreeView x:Name="treeView"               
  488.               AllowDrop="True"
  489.               DragDrop.Drop="treeView_Drop"
  490.               DragDrop.DragOver="treeView_DragOver"
  491.               DragDrop.DragEnter="treeView_DragEnter"
  492.               DragDrop.DragLeave="treeView_DragLeave" >   
  493.     </TreeView>   
  494.     <TreeView x:Name="treeView"               
  495.               AllowDrop="True"
  496.               DragDrop.Drop="treeView_Drop"
  497.               DragDrop.DragOver="treeView_DragOver"
  498.               DragDrop.DragEnter="treeView_DragEnter"
  499.               DragDrop.DragLeave="treeView_DragLeave" >   
  500.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  501.     </ListView>    },    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  502.               AllowDrop="True"
  503.               DragDrop.Drop="treeView_Drop"
  504.               DragDrop.DragOver="treeView_DragOver"
  505.               DragDrop.DragEnter="treeView_DragEnter"
  506.               DragDrop.DragLeave="treeView_DragLeave" >   
  507.     </TreeView>    <TreeView x:Name="treeView"               
  508.               AllowDrop="True"
  509.               DragDrop.Drop="treeView_Drop"
  510.               DragDrop.DragOver="treeView_DragOver"
  511.               DragDrop.DragEnter="treeView_DragEnter"
  512.               DragDrop.DragLeave="treeView_DragLeave" >   
  513.     </TreeView>   
  514.     <TreeView x:Name="treeView"               
  515.               AllowDrop="True"
  516.               DragDrop.Drop="treeView_Drop"
  517.               DragDrop.DragOver="treeView_DragOver"
  518.               DragDrop.DragEnter="treeView_DragEnter"
  519.               DragDrop.DragLeave="treeView_DragLeave" >   
  520.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  521.     </ListView>},    <TreeView x:Name="treeView"               
  522.               AllowDrop="True"
  523.               DragDrop.Drop="treeView_Drop"
  524.               DragDrop.DragOver="treeView_DragOver"
  525.               DragDrop.DragEnter="treeView_DragEnter"
  526.               DragDrop.DragLeave="treeView_DragLeave" >   
  527.     </TreeView> };    <TreeView x:Name="treeView"               
  528.               AllowDrop="True"
  529.               DragDrop.Drop="treeView_Drop"
  530.               DragDrop.DragOver="treeView_DragOver"
  531.               DragDrop.DragEnter="treeView_DragEnter"
  532.               DragDrop.DragLeave="treeView_DragLeave" >   
  533.     </TreeView> double left = pos.X;    <TreeView x:Name="treeView"               
  534.               AllowDrop="True"
  535.               DragDrop.Drop="treeView_Drop"
  536.               DragDrop.DragOver="treeView_DragOver"
  537.               DragDrop.DragEnter="treeView_DragEnter"
  538.               DragDrop.DragLeave="treeView_DragLeave" >   
  539.     </TreeView> double top = pos.Y;    <TreeView x:Name="treeView"               
  540.               AllowDrop="True"
  541.               DragDrop.Drop="treeView_Drop"
  542.               DragDrop.DragOver="treeView_DragOver"
  543.               DragDrop.DragEnter="treeView_DragEnter"
  544.               DragDrop.DragLeave="treeView_DragLeave" >   
  545.     </TreeView> this.Margin = new Thickness(left + 5, top + 10, 0, 0);        }        #region Override        protected override int VisualChildrenCount        {    <TreeView x:Name="treeView"               
  546.               AllowDrop="True"
  547.               DragDrop.Drop="treeView_Drop"
  548.               DragDrop.DragOver="treeView_DragOver"
  549.               DragDrop.DragEnter="treeView_DragEnter"
  550.               DragDrop.DragLeave="treeView_DragLeave" >   
  551.     </TreeView> get    <TreeView x:Name="treeView"               
  552.               AllowDrop="True"
  553.               DragDrop.Drop="treeView_Drop"
  554.               DragDrop.DragOver="treeView_DragOver"
  555.               DragDrop.DragEnter="treeView_DragEnter"
  556.               DragDrop.DragLeave="treeView_DragLeave" >   
  557.     </TreeView> {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  558.               AllowDrop="True"
  559.               DragDrop.Drop="treeView_Drop"
  560.               DragDrop.DragOver="treeView_DragOver"
  561.               DragDrop.DragEnter="treeView_DragEnter"
  562.               DragDrop.DragLeave="treeView_DragLeave" >   
  563.     </TreeView>    <TreeView x:Name="treeView"               
  564.               AllowDrop="True"
  565.               DragDrop.Drop="treeView_Drop"
  566.               DragDrop.DragOver="treeView_DragOver"
  567.               DragDrop.DragEnter="treeView_DragEnter"
  568.               DragDrop.DragLeave="treeView_DragLeave" >   
  569.     </TreeView>   
  570.     <TreeView x:Name="treeView"               
  571.               AllowDrop="True"
  572.               DragDrop.Drop="treeView_Drop"
  573.               DragDrop.DragOver="treeView_DragOver"
  574.               DragDrop.DragEnter="treeView_DragEnter"
  575.               DragDrop.DragLeave="treeView_DragLeave" >   
  576.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  577.     </ListView>return 1;    <TreeView x:Name="treeView"               
  578.               AllowDrop="True"
  579.               DragDrop.Drop="treeView_Drop"
  580.               DragDrop.DragOver="treeView_DragOver"
  581.               DragDrop.DragEnter="treeView_DragEnter"
  582.               DragDrop.DragLeave="treeView_DragLeave" >   
  583.     </TreeView> }        }        protected override Visual GetVisualChild(int index) // replace the Visual of the TextBox with the visual of the _contentPresenter;        {    <TreeView x:Name="treeView"               
  584.               AllowDrop="True"
  585.               DragDrop.Drop="treeView_Drop"
  586.               DragDrop.DragOver="treeView_DragOver"
  587.               DragDrop.DragEnter="treeView_DragEnter"
  588.               DragDrop.DragLeave="treeView_DragLeave" >   
  589.     </TreeView> return this._contentPresenter;        }        protected override Size MeasureOverride(Size constraint)        {    <TreeView x:Name="treeView"               
  590.               AllowDrop="True"
  591.               DragDrop.Drop="treeView_Drop"
  592.               DragDrop.DragOver="treeView_DragOver"
  593.               DragDrop.DragEnter="treeView_DragEnter"
  594.               DragDrop.DragLeave="treeView_DragLeave" >   
  595.     </TreeView> this._contentPresenter.Measure(this.Control.RenderSize); // delegate the measure override to the ContentPresenter's Measure    <TreeView x:Name="treeView"               
  596.               AllowDrop="True"
  597.               DragDrop.Drop="treeView_Drop"
  598.               DragDrop.DragOver="treeView_DragOver"
  599.               DragDrop.DragEnter="treeView_DragEnter"
  600.               DragDrop.DragLeave="treeView_DragLeave" >   
  601.     </TreeView> return this.Control.RenderSize;        }        protected override Size ArrangeOverride(Size finalSize)        {    <TreeView x:Name="treeView"               
  602.               AllowDrop="True"
  603.               DragDrop.Drop="treeView_Drop"
  604.               DragDrop.DragOver="treeView_DragOver"
  605.               DragDrop.DragEnter="treeView_DragEnter"
  606.               DragDrop.DragLeave="treeView_DragLeave" >   
  607.     </TreeView> this._contentPresenter.Arrange(new Rect(finalSize));    <TreeView x:Name="treeView"               
  608.               AllowDrop="True"
  609.               DragDrop.Drop="treeView_Drop"
  610.               DragDrop.DragOver="treeView_DragOver"
  611.               DragDrop.DragEnter="treeView_DragEnter"
  612.               DragDrop.DragLeave="treeView_DragLeave" >   
  613.     </TreeView> return finalSize;        }        #endregion Override        private  double MeasureTextWidth(string text, double fontSize, string fontFamily)        {    <TreeView x:Name="treeView"               
  614.               AllowDrop="True"
  615.               DragDrop.Drop="treeView_Drop"
  616.               DragDrop.DragOver="treeView_DragOver"
  617.               DragDrop.DragEnter="treeView_DragEnter"
  618.               DragDrop.DragLeave="treeView_DragLeave" >   
  619.     </TreeView> FormattedText formattedText = new FormattedText(    <TreeView x:Name="treeView"               
  620.               AllowDrop="True"
  621.               DragDrop.Drop="treeView_Drop"
  622.               DragDrop.DragOver="treeView_DragOver"
  623.               DragDrop.DragEnter="treeView_DragEnter"
  624.               DragDrop.DragLeave="treeView_DragLeave" >   
  625.     </TreeView> text,    <TreeView x:Name="treeView"               
  626.               AllowDrop="True"
  627.               DragDrop.Drop="treeView_Drop"
  628.               DragDrop.DragOver="treeView_DragOver"
  629.               DragDrop.DragEnter="treeView_DragEnter"
  630.               DragDrop.DragLeave="treeView_DragLeave" >   
  631.     </TreeView> System.Globalization.CultureInfo.InvariantCulture,    <TreeView x:Name="treeView"               
  632.               AllowDrop="True"
  633.               DragDrop.Drop="treeView_Drop"
  634.               DragDrop.DragOver="treeView_DragOver"
  635.               DragDrop.DragEnter="treeView_DragEnter"
  636.               DragDrop.DragLeave="treeView_DragLeave" >   
  637.     </TreeView> FlowDirection.LeftToRight,    <TreeView x:Name="treeView"               
  638.               AllowDrop="True"
  639.               DragDrop.Drop="treeView_Drop"
  640.               DragDrop.DragOver="treeView_DragOver"
  641.               DragDrop.DragEnter="treeView_DragEnter"
  642.               DragDrop.DragLeave="treeView_DragLeave" >   
  643.     </TreeView> new Typeface(fontFamily.ToString()),    <TreeView x:Name="treeView"               
  644.               AllowDrop="True"
  645.               DragDrop.Drop="treeView_Drop"
  646.               DragDrop.DragOver="treeView_DragOver"
  647.               DragDrop.DragEnter="treeView_DragEnter"
  648.               DragDrop.DragLeave="treeView_DragLeave" >   
  649.     </TreeView> fontSize,    <TreeView x:Name="treeView"               
  650.               AllowDrop="True"
  651.               DragDrop.Drop="treeView_Drop"
  652.               DragDrop.DragOver="treeView_DragOver"
  653.               DragDrop.DragEnter="treeView_DragEnter"
  654.               DragDrop.DragLeave="treeView_DragLeave" >   
  655.     </TreeView> Brushes.Black    <TreeView x:Name="treeView"               
  656.               AllowDrop="True"
  657.               DragDrop.Drop="treeView_Drop"
  658.               DragDrop.DragOver="treeView_DragOver"
  659.               DragDrop.DragEnter="treeView_DragEnter"
  660.               DragDrop.DragLeave="treeView_DragLeave" >   
  661.     </TreeView> );    <TreeView x:Name="treeView"               
  662.               AllowDrop="True"
  663.               DragDrop.Drop="treeView_Drop"
  664.               DragDrop.DragOver="treeView_DragOver"
  665.               DragDrop.DragEnter="treeView_DragEnter"
  666.               DragDrop.DragLeave="treeView_DragLeave" >   
  667.     </TreeView> return formattedText.WidthIncludingTrailingWhitespace;        }    }
复制代码
View Code在构造这个对象时,我们将传入两个重要的参数:Point pos 和 string Title ,这两个参数决定了它在何处显示什么内容。
程序用代码构建了一个Border,其内有一个TextBlock,并通过pos参数来控制了它的位置。
下面,在treeView_DragOver事件中显示这个装饰器即可。
  1.         private void treeView_DragOver(object sender, DragEventArgs e)        {    <TreeView x:Name="treeView"               
  2.               AllowDrop="True"
  3.               DragDrop.Drop="treeView_Drop"
  4.               DragDrop.DragOver="treeView_DragOver"
  5.               DragDrop.DragEnter="treeView_DragEnter"
  6.               DragDrop.DragLeave="treeView_DragLeave" >   
  7.     </TreeView> if (e.Data.GetData(typeof(ListViewAdvNodeItem)) is ListViewAdvNodeItem fromListNode)    <TreeView x:Name="treeView"               
  8.               AllowDrop="True"
  9.               DragDrop.Drop="treeView_Drop"
  10.               DragDrop.DragOver="treeView_DragOver"
  11.               DragDrop.DragEnter="treeView_DragEnter"
  12.               DragDrop.DragLeave="treeView_DragLeave" >   
  13.     </TreeView> {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  14.               AllowDrop="True"
  15.               DragDrop.Drop="treeView_Drop"
  16.               DragDrop.DragOver="treeView_DragOver"
  17.               DragDrop.DragEnter="treeView_DragEnter"
  18.               DragDrop.DragLeave="treeView_DragLeave" >   
  19.     </TreeView>    <TreeView x:Name="treeView"               
  20.               AllowDrop="True"
  21.               DragDrop.Drop="treeView_Drop"
  22.               DragDrop.DragOver="treeView_DragOver"
  23.               DragDrop.DragEnter="treeView_DragEnter"
  24.               DragDrop.DragLeave="treeView_DragLeave" >   
  25.     </TreeView>   
  26.     <TreeView x:Name="treeView"               
  27.               AllowDrop="True"
  28.               DragDrop.Drop="treeView_Drop"
  29.               DragDrop.DragOver="treeView_DragOver"
  30.               DragDrop.DragEnter="treeView_DragEnter"
  31.               DragDrop.DragLeave="treeView_DragLeave" >   
  32.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  33.     </ListView> //显示装饰器    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  34.               AllowDrop="True"
  35.               DragDrop.Drop="treeView_Drop"
  36.               DragDrop.DragOver="treeView_DragOver"
  37.               DragDrop.DragEnter="treeView_DragEnter"
  38.               DragDrop.DragLeave="treeView_DragLeave" >   
  39.     </TreeView>    <TreeView x:Name="treeView"               
  40.               AllowDrop="True"
  41.               DragDrop.Drop="treeView_Drop"
  42.               DragDrop.DragOver="treeView_DragOver"
  43.               DragDrop.DragEnter="treeView_DragEnter"
  44.               DragDrop.DragLeave="treeView_DragLeave" >   
  45.     </TreeView>   
  46.     <TreeView x:Name="treeView"               
  47.               AllowDrop="True"
  48.               DragDrop.Drop="treeView_Drop"
  49.               DragDrop.DragOver="treeView_DragOver"
  50.               DragDrop.DragEnter="treeView_DragEnter"
  51.               DragDrop.DragLeave="treeView_DragLeave" >   
  52.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  53.     </ListView>AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this.treeView);    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  54.               AllowDrop="True"
  55.               DragDrop.Drop="treeView_Drop"
  56.               DragDrop.DragOver="treeView_DragOver"
  57.               DragDrop.DragEnter="treeView_DragEnter"
  58.               DragDrop.DragLeave="treeView_DragLeave" >   
  59.     </TreeView>    <TreeView x:Name="treeView"               
  60.               AllowDrop="True"
  61.               DragDrop.Drop="treeView_Drop"
  62.               DragDrop.DragOver="treeView_DragOver"
  63.               DragDrop.DragEnter="treeView_DragEnter"
  64.               DragDrop.DragLeave="treeView_DragLeave" >   
  65.     </TreeView>   
  66.     <TreeView x:Name="treeView"               
  67.               AllowDrop="True"
  68.               DragDrop.Drop="treeView_Drop"
  69.               DragDrop.DragOver="treeView_DragOver"
  70.               DragDrop.DragEnter="treeView_DragEnter"
  71.               DragDrop.DragLeave="treeView_DragLeave" >   
  72.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  73.     </ListView>if (adornerLayer != null)    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  74.               AllowDrop="True"
  75.               DragDrop.Drop="treeView_Drop"
  76.               DragDrop.DragOver="treeView_DragOver"
  77.               DragDrop.DragEnter="treeView_DragEnter"
  78.               DragDrop.DragLeave="treeView_DragLeave" >   
  79.     </TreeView>    <TreeView x:Name="treeView"               
  80.               AllowDrop="True"
  81.               DragDrop.Drop="treeView_Drop"
  82.               DragDrop.DragOver="treeView_DragOver"
  83.               DragDrop.DragEnter="treeView_DragEnter"
  84.               DragDrop.DragLeave="treeView_DragLeave" >   
  85.     </TreeView>   
  86.     <TreeView x:Name="treeView"               
  87.               AllowDrop="True"
  88.               DragDrop.Drop="treeView_Drop"
  89.               DragDrop.DragOver="treeView_DragOver"
  90.               DragDrop.DragEnter="treeView_DragEnter"
  91.               DragDrop.DragLeave="treeView_DragLeave" >   
  92.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  93.     </ListView>{    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  94.               AllowDrop="True"
  95.               DragDrop.Drop="treeView_Drop"
  96.               DragDrop.DragOver="treeView_DragOver"
  97.               DragDrop.DragEnter="treeView_DragEnter"
  98.               DragDrop.DragLeave="treeView_DragLeave" >   
  99.     </TreeView>    <TreeView x:Name="treeView"               
  100.               AllowDrop="True"
  101.               DragDrop.Drop="treeView_Drop"
  102.               DragDrop.DragOver="treeView_DragOver"
  103.               DragDrop.DragEnter="treeView_DragEnter"
  104.               DragDrop.DragLeave="treeView_DragLeave" >   
  105.     </TreeView>   
  106.     <TreeView x:Name="treeView"               
  107.               AllowDrop="True"
  108.               DragDrop.Drop="treeView_Drop"
  109.               DragDrop.DragOver="treeView_DragOver"
  110.               DragDrop.DragEnter="treeView_DragEnter"
  111.               DragDrop.DragLeave="treeView_DragLeave" >   
  112.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  113.     </ListView>    Adorner[] adorners = adornerLayer.GetAdorners(this.treeView);    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  114.               AllowDrop="True"
  115.               DragDrop.Drop="treeView_Drop"
  116.               DragDrop.DragOver="treeView_DragOver"
  117.               DragDrop.DragEnter="treeView_DragEnter"
  118.               DragDrop.DragLeave="treeView_DragLeave" >   
  119.     </TreeView>    <TreeView x:Name="treeView"               
  120.               AllowDrop="True"
  121.               DragDrop.Drop="treeView_Drop"
  122.               DragDrop.DragOver="treeView_DragOver"
  123.               DragDrop.DragEnter="treeView_DragEnter"
  124.               DragDrop.DragLeave="treeView_DragLeave" >   
  125.     </TreeView>   
  126.     <TreeView x:Name="treeView"               
  127.               AllowDrop="True"
  128.               DragDrop.Drop="treeView_Drop"
  129.               DragDrop.DragOver="treeView_DragOver"
  130.               DragDrop.DragEnter="treeView_DragEnter"
  131.               DragDrop.DragLeave="treeView_DragLeave" >   
  132.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  133.     </ListView>    if (adorners != null)    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  134.               AllowDrop="True"
  135.               DragDrop.Drop="treeView_Drop"
  136.               DragDrop.DragOver="treeView_DragOver"
  137.               DragDrop.DragEnter="treeView_DragEnter"
  138.               DragDrop.DragLeave="treeView_DragLeave" >   
  139.     </TreeView>    <TreeView x:Name="treeView"               
  140.               AllowDrop="True"
  141.               DragDrop.Drop="treeView_Drop"
  142.               DragDrop.DragOver="treeView_DragOver"
  143.               DragDrop.DragEnter="treeView_DragEnter"
  144.               DragDrop.DragLeave="treeView_DragLeave" >   
  145.     </TreeView>   
  146.     <TreeView x:Name="treeView"               
  147.               AllowDrop="True"
  148.               DragDrop.Drop="treeView_Drop"
  149.               DragDrop.DragOver="treeView_DragOver"
  150.               DragDrop.DragEnter="treeView_DragEnter"
  151.               DragDrop.DragLeave="treeView_DragLeave" >   
  152.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  153.     </ListView>    {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  154.               AllowDrop="True"
  155.               DragDrop.Drop="treeView_Drop"
  156.               DragDrop.DragOver="treeView_DragOver"
  157.               DragDrop.DragEnter="treeView_DragEnter"
  158.               DragDrop.DragLeave="treeView_DragLeave" >   
  159.     </TreeView>    <TreeView x:Name="treeView"               
  160.               AllowDrop="True"
  161.               DragDrop.Drop="treeView_Drop"
  162.               DragDrop.DragOver="treeView_DragOver"
  163.               DragDrop.DragEnter="treeView_DragEnter"
  164.               DragDrop.DragLeave="treeView_DragLeave" >   
  165.     </TreeView>   
  166.     <TreeView x:Name="treeView"               
  167.               AllowDrop="True"
  168.               DragDrop.Drop="treeView_Drop"
  169.               DragDrop.DragOver="treeView_DragOver"
  170.               DragDrop.DragEnter="treeView_DragEnter"
  171.               DragDrop.DragLeave="treeView_DragLeave" >   
  172.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  173.     </ListView>        foreach (var adorner in adorners)    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  174.               AllowDrop="True"
  175.               DragDrop.Drop="treeView_Drop"
  176.               DragDrop.DragOver="treeView_DragOver"
  177.               DragDrop.DragEnter="treeView_DragEnter"
  178.               DragDrop.DragLeave="treeView_DragLeave" >   
  179.     </TreeView>    <TreeView x:Name="treeView"               
  180.               AllowDrop="True"
  181.               DragDrop.Drop="treeView_Drop"
  182.               DragDrop.DragOver="treeView_DragOver"
  183.               DragDrop.DragEnter="treeView_DragEnter"
  184.               DragDrop.DragLeave="treeView_DragLeave" >   
  185.     </TreeView>   
  186.     <TreeView x:Name="treeView"               
  187.               AllowDrop="True"
  188.               DragDrop.Drop="treeView_Drop"
  189.               DragDrop.DragOver="treeView_DragOver"
  190.               DragDrop.DragEnter="treeView_DragEnter"
  191.               DragDrop.DragLeave="treeView_DragLeave" >   
  192.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  193.     </ListView>        {    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  194.               AllowDrop="True"
  195.               DragDrop.Drop="treeView_Drop"
  196.               DragDrop.DragOver="treeView_DragOver"
  197.               DragDrop.DragEnter="treeView_DragEnter"
  198.               DragDrop.DragLeave="treeView_DragLeave" >   
  199.     </TreeView>    <TreeView x:Name="treeView"               
  200.               AllowDrop="True"
  201.               DragDrop.Drop="treeView_Drop"
  202.               DragDrop.DragOver="treeView_DragOver"
  203.               DragDrop.DragEnter="treeView_DragEnter"
  204.               DragDrop.DragLeave="treeView_DragLeave" >   
  205.     </TreeView>   
  206.     <TreeView x:Name="treeView"               
  207.               AllowDrop="True"
  208.               DragDrop.Drop="treeView_Drop"
  209.               DragDrop.DragOver="treeView_DragOver"
  210.               DragDrop.DragEnter="treeView_DragEnter"
  211.               DragDrop.DragLeave="treeView_DragLeave" >   
  212.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  213.     </ListView>    <TreeView x:Name="treeView"               
  214.               AllowDrop="True"
  215.               DragDrop.Drop="treeView_Drop"
  216.               DragDrop.DragOver="treeView_DragOver"
  217.               DragDrop.DragEnter="treeView_DragEnter"
  218.               DragDrop.DragLeave="treeView_DragLeave" >   
  219.     </TreeView> adornerLayer.Remove(adorner);    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  220.               AllowDrop="True"
  221.               DragDrop.Drop="treeView_Drop"
  222.               DragDrop.DragOver="treeView_DragOver"
  223.               DragDrop.DragEnter="treeView_DragEnter"
  224.               DragDrop.DragLeave="treeView_DragLeave" >   
  225.     </TreeView>    <TreeView x:Name="treeView"               
  226.               AllowDrop="True"
  227.               DragDrop.Drop="treeView_Drop"
  228.               DragDrop.DragOver="treeView_DragOver"
  229.               DragDrop.DragEnter="treeView_DragEnter"
  230.               DragDrop.DragLeave="treeView_DragLeave" >   
  231.     </TreeView>   
  232.     <TreeView x:Name="treeView"               
  233.               AllowDrop="True"
  234.               DragDrop.Drop="treeView_Drop"
  235.               DragDrop.DragOver="treeView_DragOver"
  236.               DragDrop.DragEnter="treeView_DragEnter"
  237.               DragDrop.DragLeave="treeView_DragLeave" >   
  238.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  239.     </ListView>        }    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  240.               AllowDrop="True"
  241.               DragDrop.Drop="treeView_Drop"
  242.               DragDrop.DragOver="treeView_DragOver"
  243.               DragDrop.DragEnter="treeView_DragEnter"
  244.               DragDrop.DragLeave="treeView_DragLeave" >   
  245.     </TreeView>    <TreeView x:Name="treeView"               
  246.               AllowDrop="True"
  247.               DragDrop.Drop="treeView_Drop"
  248.               DragDrop.DragOver="treeView_DragOver"
  249.               DragDrop.DragEnter="treeView_DragEnter"
  250.               DragDrop.DragLeave="treeView_DragLeave" >   
  251.     </TreeView>   
  252.     <TreeView x:Name="treeView"               
  253.               AllowDrop="True"
  254.               DragDrop.Drop="treeView_Drop"
  255.               DragDrop.DragOver="treeView_DragOver"
  256.               DragDrop.DragEnter="treeView_DragEnter"
  257.               DragDrop.DragLeave="treeView_DragLeave" >   
  258.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  259.     </ListView>    }    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  260.               AllowDrop="True"
  261.               DragDrop.Drop="treeView_Drop"
  262.               DragDrop.DragOver="treeView_DragOver"
  263.               DragDrop.DragEnter="treeView_DragEnter"
  264.               DragDrop.DragLeave="treeView_DragLeave" >   
  265.     </TreeView>    <TreeView x:Name="treeView"               
  266.               AllowDrop="True"
  267.               DragDrop.Drop="treeView_Drop"
  268.               DragDrop.DragOver="treeView_DragOver"
  269.               DragDrop.DragEnter="treeView_DragEnter"
  270.               DragDrop.DragLeave="treeView_DragLeave" >   
  271.     </TreeView>   
  272.     <TreeView x:Name="treeView"               
  273.               AllowDrop="True"
  274.               DragDrop.Drop="treeView_Drop"
  275.               DragDrop.DragOver="treeView_DragOver"
  276.               DragDrop.DragEnter="treeView_DragEnter"
  277.               DragDrop.DragLeave="treeView_DragLeave" >   
  278.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  279.     </ListView>    DragTitleAdorner _adorner = new DragTitleAdorner(this.treeView, pos, fromListNode.Excerpt?.Title);    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  280.               AllowDrop="True"
  281.               DragDrop.Drop="treeView_Drop"
  282.               DragDrop.DragOver="treeView_DragOver"
  283.               DragDrop.DragEnter="treeView_DragEnter"
  284.               DragDrop.DragLeave="treeView_DragLeave" >   
  285.     </TreeView>    <TreeView x:Name="treeView"               
  286.               AllowDrop="True"
  287.               DragDrop.Drop="treeView_Drop"
  288.               DragDrop.DragOver="treeView_DragOver"
  289.               DragDrop.DragEnter="treeView_DragEnter"
  290.               DragDrop.DragLeave="treeView_DragLeave" >   
  291.     </TreeView>   
  292.     <TreeView x:Name="treeView"               
  293.               AllowDrop="True"
  294.               DragDrop.Drop="treeView_Drop"
  295.               DragDrop.DragOver="treeView_DragOver"
  296.               DragDrop.DragEnter="treeView_DragEnter"
  297.               DragDrop.DragLeave="treeView_DragLeave" >   
  298.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  299.     </ListView>    adornerLayer.Add(_adorner);    <ListView x:Name="listView"    <TreeView x:Name="treeView"               
  300.               AllowDrop="True"
  301.               DragDrop.Drop="treeView_Drop"
  302.               DragDrop.DragOver="treeView_DragOver"
  303.               DragDrop.DragEnter="treeView_DragEnter"
  304.               DragDrop.DragLeave="treeView_DragLeave" >   
  305.     </TreeView>    <TreeView x:Name="treeView"               
  306.               AllowDrop="True"
  307.               DragDrop.Drop="treeView_Drop"
  308.               DragDrop.DragOver="treeView_DragOver"
  309.               DragDrop.DragEnter="treeView_DragEnter"
  310.               DragDrop.DragLeave="treeView_DragLeave" >   
  311.     </TreeView>   
  312.     <TreeView x:Name="treeView"               
  313.               AllowDrop="True"
  314.               DragDrop.Drop="treeView_Drop"
  315.               DragDrop.DragOver="treeView_DragOver"
  316.               DragDrop.DragEnter="treeView_DragEnter"
  317.               DragDrop.DragLeave="treeView_DragLeave" >   
  318.     </TreeView>   Mouse.MouseMove="listView_MouseMove" >        
  319.     </ListView>}    <TreeView x:Name="treeView"               
  320.               AllowDrop="True"
  321.               DragDrop.Drop="treeView_Drop"
  322.               DragDrop.DragOver="treeView_DragOver"
  323.               DragDrop.DragEnter="treeView_DragEnter"
  324.               DragDrop.DragLeave="treeView_DragLeave" >   
  325.     </TreeView> }    <TreeView x:Name="treeView"               
  326.               AllowDrop="True"
  327.               DragDrop.Drop="treeView_Drop"
  328.               DragDrop.DragOver="treeView_DragOver"
  329.               DragDrop.DragEnter="treeView_DragEnter"
  330.               DragDrop.DragLeave="treeView_DragLeave" >   
  331.     </TreeView>  e.Handled = true;        }
复制代码
 更多信息请参考文末源码。
  
资源
系列目录:WPF开发快速入门【0】前言与目录 
代码下载:Learn WPF: WPF学习笔记 (gitee.com)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

羊蹓狼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表