If you are using binding, you could bind a model to the DataContext of the master control such as the following model:
class MasterViewModel{
///Action for child user control 1
void DoUserControlAction1(){ //... }
///Action for child user control 2
void DoUserControlAction2(){ //... }
//...
///Action for child user control n
void DoUserControlActionN(){ //... }
}
Then in each child control, since its DataContext is inherited from the bound DataContext of the parent Master UserControl:
class UserControl1{
public void HandleButtonClick(object sender, EventArgs e){
((MasterViewModel) DataContext).DoUserControlAction1();
}
}
This kind logic should be in the ViewModel that you have bound to the master control.
If you do not have binding, you could always add events to the child controls and bubble them up to the master control and handle it there.