Как правильно написать на MVVM?
Для начала, возьмите какой нибудь MVVM framework (SimpleMVVM, MVVMLight, у них есть куча примеров), делаем свой view, ViewModel. В этих фрейморках уже реализованы базовые классы для создания VM (реализован INotyfyPropertyChanged). В VM надо добавить необходимые свойства, с которыми будет привязка свойств элементов. Так же желательно сделать класс-сервис, который будет создавать по требованию модель, экземпляр класса прописать в App.Resources, и биндить необходимую VM сразу в Xalm, к DataContext="{Binding GroupsViewModel, Mode=OneWay, Source={StaticResource Locator}}">(у локатора есть свойство GroupsViewModel, в котором зоздается необходимый VM, передаются все параметры на сервисы (например работа с БД). 
создание и передача элементов, или работа с контролами напрямую, увеличивает связанность кода, и тд.
те, например в вашем случае:
locator.cspublic class Locator
{
  public MainViewModel MainVM 
  {
      get {return new MainViewModel(); }
  }
}
MainViewModel.cspublic class MainViewModel : Notifier
    {
       MainViewModel ()
       {
       }

        string address;
        public string Address;
        {
            get { return address; }
            set { address = value; OnPropertyChanged("Address"); }
        }

        string someControlText;
        public string SomeControlText
        {
            get { return someControlText; }
            set { someControlText = value; OnPropertyChanged("SomeControlText"); }
        }
    }
в App.xaml в ресурсы прописываем (естественно добавляем необходимые xmlns)<Locator x:Key="Locator"/>
MainView.xaml<UserControl x:Class="GPClient.View.BrowserView" DataContext="{Binding MainViewModel, Source={StaticResource Locator}}">>
    <ChromiumWebBrowser Address="{Binding Path=Address, Mode=TwoWay}"/>
    <SomeControl Text="{Binding Path=SomeControlText, Mode=TwoWay}" />
  </UserControl>
Все дело в Mode=TwoWay. если элемент сам устанавливает свойство, то оно автоматом обновляется в VM, и наоборот, те если вам надо перейти на адрес, в методе в VM пишем Address="http://перейди-на.сайт"; обращаемся к полю VM, а не к приватному члену, иначе не вызовется PropertyChanged, с SomeText, так же.
Если у нас есть TextBox, то привязка таким образом позволяет получать введенное в него значение.
для привязки методов, и событий, используются Command и триггеры в XAML.
У вас тут немного спутано понятие ViewModel и Model. В VM прописываются, свойства, к которым будет привязка элементов View, а Model, это данные с которыми мы работаем, например модель БД, классы в которые сериализуется XML.
Скачайте MVVMLight, SimpleMVVM, это простые фреймворки, с хорошими примерами и легковесные.
Если актуалити, то могу показать пример с библиотекой MvvmLight.