Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4069372
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 20, 20262026-05-20T16:29:34+00:00 2026-05-20T16:29:34+00:00

I have implemented Drag and Drop on a treeview in WPF, which works as

  • 0

I have implemented Drag and Drop on a treeview in WPF, which works as intended. However, it is only adding the root element (the one dragged over) to the data object holding the values of the tree, but adding all of the children (and their children, and so on) to the visual tree.

Here is my first attempt at adding the children to the data object (this should add the first sub-level):

public void DropNewProjectOrganLocation(OrganLocationViewModel organLocation)
    {
        _projOrganLocation.Add(organLocation);
        ObservableCollection<OrganLocationViewModel> subOrgans = organLocation.SubOrganLocations;
        foreach (OrganLocationViewModel node in subOrgans)
        {
                organLocation.SubOrganLocations.Add(node);
                node.ParentOrganLocation = organLocation;

        }
    }

Now when I drag and drop an item that has no children, it works as intended (and is added to the object tree as well as the visual tree). However, when I try to drag and drop an item that has any number of children, it loops through the foreach code block, then when it finishes and tries to complete the dragdrop, it errors out with this error message:

An unhandled exception of type 'System.InvalidOperationException' occurred in PresentationCore.dll
Additional information: Collection was modified; enumeration operation may not execute

and I’m using the DoDragDrop method from System.Windows.DragDrop
Here is the line that causes the error:
System.Windows.DragDrop.DoDragDrop(m_DragInfo.VisualSource, data, m_DragInfo.Effects);

Does anyone know how I can recursively add children nodes to the object tree?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-20T16:29:35+00:00Added an answer on May 20, 2026 at 4:29 pm

    As the exception message suggests, the problem is that you are enumerating and modifying the same collection at the same time, which is not allowed:

    ObservableCollection<OrganLocationViewModel> subOrgans = organLocation.SubOrganLocations;
    foreach (OrganLocationViewModel node in subOrgans)
    {
            organLocation.SubOrganLocations.Add(node);
            node.ParentOrganLocation = organLocation;
    }
    

    Here you enumerate organLocation.SubOrganLocations and inside the foreach operator adding items to it. And this behavior is probably not what you want either.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm populating a TreeView through a XmlDataProvider, and have already implemented Drag-and-drop functionality, so
I have a WPF 4 application where I have implemented Drag and Drop using
I'm trying to implement drag/drop in my TreeView and have it all working except
I have implemented drag and drop in my application, but am having some difficulty
I have implemented my custom drag&drop by deriving from COleDataSource and COleDropTarget. Everythings work
I have simple drag and drop functions implemented in QmainWindow the reference taken from
I've implemented drag and drop in my JTree and it works, but I find
We have implemented a drag and drop feature that shows a nice simple representation
In one of our application we have to implement item drag/drop functionality on the
I have implemented drag drop functionality to a surfacelistbox as explained here (http://msdn.microsoft.com/en-us/library/ff727837.aspx). It's

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.