Because you defined AppColor as
public ColorViewModel AppColor { get; set; }
when you assing a new value to AppColor, notbody gets notified. Make the MainViewModel also implement INotifyPropertyChanged and change AppColor declaration to
private ColorViewModel appColor;
public ColorViewModel AppColor
{
get
{
return appColor;
}
set
{
if (value != appColor)
{
appColor= value;
NotifyPropertyChanged("AppColor");
}
}
}