A: 

I can't remember where I read this wise saying: The best way to work with a TreeView is not not to work with the TreeView

What does this mean? Move the functionality into the tree nodes and keep the tree view as thumb as possible. Unfortunately, by default the tree node does not many events, though, it's easy to redirect the tree view events to the nodes.

Once done, you can override the ContextMenuStrip property in your nodes. The first selected node creates the list of ToolStripItems it wants to handle and asks the tree view which are allowed (e.g. with a FilterMenuItems(desiredItems) method). The tree view asks all selected nodes which of the nodes they would be able to handle. The result is your context menu.

This should work with almost any count of different nodes and keeps the tree (nodes) easy to maintain.

Greets Flo

Edit: Dang! Missed the WPF tag, so I cannot asses the available events, since I did not yet work with WPF

Florian Reischl
While not exactly the answer I was looking for it did put my train of thought on the right track and I'm doing something very similar in WPF. I can't bind my events directly to my ViewModels but your correct in that when a user right clicks on a node, I should populate the ContextMenu with choices related to that node against other nodes.
Matthew