Second, instead of sending events around, or passing arguments through your user controls, use reflection to find the controls that care about right-clicks. This is the fun part. There exists a neat little static method called VisualTreeHelper.FindElementsInHostCoordinates(). You pass it the mouse coordinates, and it returns a list of all of the controls that occupy space at that point. Then, just find any controls that implement the interface IRightClickable and call the method.