You can define two dependency property in uc1:
public static readonly DependencyProperty ShouldUc2VisibleProperty = DependencyProperty.Register("ShouldUc2Visible", typeof(bool),
typeof(UserControl1), new FrameworkPropertyMetadata(false));
public bool ShouldUc2Visible
{
get { return (bool)GetValue(ShouldUc2VisibleProperty ); }
set { SetValue(ShouldUc2VisibleProperty , value); }
}
You should set the property using uc1's SetValue() method, do not set the property directly, it breaks bindings.
then your uc2 and uc3 can bind to uc1's ShouldUc2Visible and ShouldUc3Visible property, remember to use the VisibilityConverter as well.
Regards
Joseph Leung