I would try something like this:
http://www.codeproject.com/Articles/420545/WPF-Drag-and-Drop-MVVM-using-Behavior
You would have to extend the interfaces a little bit:
interface IDragable
{
Type DataType { get; }
// removes the department from the employ if source = grid and if source = listbox it removes the department from the list.
void Remove(object i);
// returns the department if source = grid and if source = listbox.
object GetDataToDrag();
}
interface IDropable
{
Type DataType { get; }
// if target = grid -> set department on current employee, if target = listbox -> add item to listbox.
void Drop(object data)
}
So you need 2 ViewModels -> one for the grid, and one for the ListBox and all of them Implement IDragable and IDropable.
And the behaviors are pretty much the same like in the codeproject article i posted above.
If you need further assistance with them simply ask ;)