Как (правильно) обновить M в MVVM приложения WPF?

Пройдя сериюЭдвард Тангей 'с вопросами, не связанными с использованием MVVM для приложения WPF, которые можно найти в Связанной боковой панели егоТолстые модели, худые ViewModels и немые виды, лучший подход MVVM?, Я немного смущен его окончательным заявлением WPF вБольшие умные ViewModels, тупые Views и любая модель, лучший подход MVVM?

этоM (модель) - класс клиента:

//model
public class Customer
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime TimeOfMostRecentActivity { get; set; }

    public static Customer GetCurrentCustomer()
    {
        return new Customer 
                   { FirstName = "Jim"
                     , LastName = "Smith"
                     , TimeOfMostRecentActivity = DateTime.Now 
                   };
    }

}

который возвращает текущего пользователя. Вид, потому что он возвращает дубликаты вновь созданного "ток" Пользователь ...

Но где Мданные хранятся и обновляются в случае необходимости?

Предположим, я хочу изменить модельтекущий пользовательFirstName к "Геннадий "?

Я добавил кнопку для обновления модели с помощью этого обработчика события нажатия кнопки:

private void button1_Click(object sender, RoutedEventArgs e)
{


} 

стремясь изменить модель "s данные из него, которые будут отражены в GUI.

Как я могу сделать это, нажав эту кнопку ... извините, поместив код в это?button1_Click()

Или что-то не так с моим желанием сделать это?

Затем. как правильно обновить / изменить M в MVVM?

Обновить:

Кажется, все ответы относятся к тому, что я должен вносить изменения не в M, а в VM.

Хотя я'мы специально спрашивали оссылка на реализацию M-V-VM с:

public CustomerViewModel()
{
    _timer = new Timer(CheckForChangesInModel, null, 0, 1000);
} 
private void CheckForChangesInModel(object state)
{
    Customer currentCustomer = CustomerViewModel.GetCurrentCustomer();
    MapFieldsFromModeltoViewModel(currentCustomer, this);
} 
public static void MapFieldsFromModeltoViewModel
     (Customer model, CustomerViewModel viewModel) 
{
    viewModel.FirstName = model.FirstName;
    viewModel.LastName = model.LastName;
    viewModel.TimeOfMostRecentActivity = model.TimeOfMostRecentActivity;
}

Так, например, при реализации кодаот Адольфо Пересаответ изменения, 'TextBoxсодержание изменено с "Джим" к "Геннадий» только на период, установленный в._timer = new Timer(CheckForChangesInModel, null, 0, 1000);

Вся логикаупомянутая мной M-V-VM в подходе WPF таков, что это "М" должно быть обновлено, чтобы VM зафиксировала эти изменения, но не "VM».

Более того, я не могу понять, если внести изменения вВ.М. как они могут быть отражены в М еслиВ.М. знает о М но - не наоборот - модель не знает о ViewModel).

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

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