多个控件上的C#WPF DragDrop事件

时间:2018-01-05 00:52:35

标签: c# wpf datagrid treeview drag

大家好,我有一个WPF窗口,3个不同的DataGrids和一个树视图。我的目标是将项目从树视图拖放到特定的数据网格中。我已经有了拖放工作代码,并且工作完美无缺但我的问题是我不知道如何将事件链接到其他数据视图。所以在' Drop'事件我改变了我的第一个数据视图的内容,但我想改变数据视图的内容,我实际上删除了该项目。

这是我的代码:

对于xaml中的每个DataGrid:

web: node server.js

我的Treeview PreviewMouseMove事件:

Drop="Droptree_Drop" DragEnter="Droptree_DragEnter" AllowDrop="True" 

Droptree_DragEnter事件:

  private void TvDates_PreviewMouseMove(object sender, MouseEventArgs e)
        {
            try
            {
                Point mousePos = e.GetPosition(null);
                Vector diff = startPoint - mousePos;

                if (e.LeftButton == MouseButtonState.Pressed &&
                   (Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance ||
                    Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance))
                {
                    //
                    TreeView tree = sender as TreeView;
                    TreeViewItem tvitem = FindAnchestor<TreeViewItem>((DependencyObject)e.OriginalSource);
                    // Initialize the drag & drop operation
                    DataObject dragData = new DataObject("myFormat", tvDates.SelectedItem.ToString());
                    DragDrop.DoDragDrop(tvitem, dragData, DragDropEffects.Move);

                }
            }
            catch (Exception)
            {

            }

        }

最后是我的Drop事件:

 private void Droptree_DragEnter(object sender, DragEventArgs e)
        {
            if (!e.Data.GetDataPresent("myFormat") ||
                sender == e.Source)
            {
                e.Effects = DragDropEffects.None;
            }
        }

1 个答案:

答案 0 :(得分:0)

将此代码添加到事件中修复它:

DataGrid dg = sender as DataGrid;
dg.ItemsSource = ....