I am using Visual Studio 2012, developing C# WPF on Windows 7.

I have a situation where I need to support viewing and modification of data in a DataGrid-style interface, only supporting child rows... editable in-place. Think of a data set where the root nodes are courses being taught at a university, and the child nodes are the students taking each class. Not exactly realistic, but it gets the point across... only two levels of data, so its not nested deep. Both the parent and the child data have multiple columns that need to be editable.

I want the user to be able to move up and down through the data, editing both parent and child data, expanding and collapsing the parent nodes at will. It needs to support textbox editing, as well as combo and check boxes. I should be able to find the selected row, and the parent or children of that selected row. It will be bound to an observablecollection formatted the same way, i.e. each node in the collection will contain an observablecollection pointing to any children it might have. It needs to support both single-row and multi-row selection.

DataGrid doesn't work, because it doesn't seem to support a hierarchical structure. Treeview does, but it isn't multi-columnar. I don't want to spend money on a third-party control, but there has to be an option to do something like this... it's far too common a scenario. Just looking for suggestions... and I'm okay doing extra coding to make the thing behave properly.

Any suggestions are appreciated.