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