Событие C# WPF DragDrop для нескольких элементов управления

Привет, у меня есть окно WPF, 3 разных DataGrid и одно древовидное представление. Моя цель - перетащить элемент из дерева в определенную сетку данных. У меня есть рабочий код для перетаскивания, и он работает безупречно, но моя проблема в том, что я не знаю, как связать событие с другими представлениями данных. Итак, в событии «Drop» я меняю содержимое своего первого представления данных, но я хотел бы изменить содержимое представления данных, на которое я фактически сбросил элемент.

это мой код:

Для каждого DataGrid в xaml:

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

Мое событие Treeview PreviewMouseMove:

  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)
            {

            }

        }

Событие Droptree_DragEnter:

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

и, наконец, мое событие Drop:

 private void Droptree_Drop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent("myFormat"))
            {
              //  MessageBox.Show(e.Data.GetData("myFormat") as string); Get Item content
                List<string> currentitems = new List<string>();

                foreach (dynamic item in dgChauffeur1.Items)
                {
                    currentitems.Add(item.Orders.ToString());


                }
                currentitems.Add(e.Data.GetData("myFormat") as string);



                dgChauffeur1.ItemsSource = currentitems.Select(s => new { Orders = s }).ToList();  //This is where i have my DataGrid however i want to have the datagrid i dropped my item on.




            }
        }

person Siy    schedule 05.01.2018    source источник


Ответы (1)


добавление этого кода в событие исправило его:

DataGrid dg = sender as DataGrid;
dg.ItemsSource = ....
person Siy    schedule 05.01.2018