Свойство зависимости связывает usercontrol с моделью представления

По сути, у меня есть главное окно с пользовательским элементом управления, содержащее свойство, которое привязано к модели представления главного окна. Идея состоит в том, что когда свойство изменяется в пользовательской форме, то при привязке также изменяется свойство в viewmodel главного окна. Проблема в том, что это работает, когда пользовательский элемент управления не имеет ViewModel, когда я добавляю простую ViewModel в пользовательский элемент управления, привязка больше не работает. И так как мне нужен ViewModel для моего контроля, мне нужно понять, почему добавление ViewModel нарушает привязку и как ее исправить. Любые предложения приветствуются.

public partial class Control1 : UserControl, INotifyPropertyChanged
{
   public Control1()
    {
        InitializeComponent();
        Loaded += Control1_Loaded;
    }

    void Control1_Loaded(object sender, RoutedEventArgs e)
    {
        DataContext = new Control1ViewModel();
    }

    public static DependencyProperty SavedStringProperty = DependencyProperty.Register(
       "SavedString", typeof(string), typeof(Control1));
    public string SavedString
    {
        get
        {
            return (string)GetValue(SavedStringProperty);
        }
        set
        {
            SetValue(SavedStringProperty, value);
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;


    private void FirePropChanged(string property)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(property));
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
         SavedString = "Hi";
    }   
}

public class MainWindowViewModel : INotifyPropertyChanged
{
    private string _message = "Hi";
    public string myMessage
    {
        get
        {
          return _message;  
        }
        set
        {
            _message = value;
            FirePropChanged("myMessage");
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;

    private void FirePropChanged(string property)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(property));
    }



    private string _savedString;
    public string SavedString
    {
        get
        {
            return _savedString;
        }
        set
        {
            _savedString = value;
            FirePropChanged("SavedString");
        }
    }
}

xaml (в MainWindow):

<myCtrl:Control1 SavedString="{Binding Path=SavedString, Mode=TwoWay}"/>

CS (мой режим просмотра UC):

 public class Control1ViewModel : INotifyPropertyChanged
 {
      public event PropertyChangedEventHandler PropertyChanged;       
 }

Ответы на вопрос(2)

Ваш ответ на вопрос