If you ever wanted to bind a command target on a context menu item to its “parent” (i.e. the control on which the context menu is shown) you noticed that this approach, using RelativeSource with FindAncestor and AncestorType, doesn’t work, assuming you have a control defined as type MyControlType on which you have the context menu:
Instead you should use the PlacementTarget property of the ContextMenu object that owns the context menu item, because the MyControlType object is NOT in the same visual tree as the current context menu item, and therefore RelativeSource cannot find that “parent”:
I hope it helps someone.
PS: If you need to find an ancestor of the PlacementTarget object and if you own the code for MyControlType, you could write a property in code to get the visual parent you need.