I have code that looks something like this:
First of all, DataContext="{Binding}"
does not make much sense as that would bind the DataContext to the DataContext. The problem here is probably that the ContextMenu is not in the logical tree, and its visual tree is disconnected since ContextMenus are floating popups.
Try binding the DataContext via the PlacementTarget:
DataContext="{Binding PlacementTarget.DataContext,
RelativeSource={RelativeSource Self}}"