Настройка Contact.Name
не вызывает событие INotifyPropertyChanged.NotifyChanged
, так как установщик контактов не выполняется. Вы можете исправить это, используя один из следующих методов:
Реализация INotifyPropertyChanged также в классе вашей модели
public class Person : INotifyPropertyChanged
{
private string _name;
public string Name
{
get => _name;
set
{
_name = value;
if (PropertyChanged != null)
PropertyChanged(this, nameof(Name));
}
}
public event PropertyChangedHandler PropertyChanged;
}
Или обернуть PersonClass в PersonViewModel
public class PersonViewModel : ViewModelBase
{
private readonly Person _person;
public PersonViewModel(Person person)
{
_person = person;
}
public string Name
{
get => _person.Name;
set
{
var name = _person.Name;
if (Set(ref name, value))
_person.Name = name;
}
}
}
и в MainViewModel:
private PersonViewModel _contactViewModel
public PersonViewModel Contact
{
get { return _contactViewModel ?? (_contactViewModel = new PersonViewModel(_contact)); }
}
Или создайте отдельное свойство ContactName в MainViewModel
... и используя ContactName
вместо Contact.Name
в привязке и обработчике события Click.
public string ContactName
{
get { return _contact.Name; }
set
{
var name = _contact.Name;
if (Set(ref name, value))
_contact.Name = name;
}
}