Как я могу обнаружить изменения свойств внутри моей модели в модели представления?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу обнаружить изменения свойств внутри моей модели в модели представления?

Сообщение Anonymous »

Я создаю свое первое производственное приложение с использованием WPF MVVM, Caliburn Micro и службы WCF.

Я подошел к моменту, когда мне нужна моя ViewModel для отслеживания изменений в отдельных свойствах внутри моей модели. Я привожу вам пример. Моя виртуальная машина имеет такие свойства:

Код: Выделить всё

public OrdenesTransporteWCFModel OrdenTransporte { get; set; }
public List TiposCarga { get; set; }
public List TiposCamion { get; set; }
public List MediosContacto { get; set; }
OrdenesTransporteWCFModel — это модель, полученная из службы WCF, и мое представление может выглядеть примерно так:
Как видите, я привязываю элементы управления к отдельным свойствам внутри моей модели (OrdenTransporte).

Теперь мне нужна моя виртуальная машина для отслеживания изменений в этих свойствах: например, у меня есть логическое значение в свойстве моей виртуальной машины HasChange, которое мне нужно. активируется, если какое-либо поле изменилось. Также у меня есть метод TipoCamionChange, который мне нужно запустить, если свойство ID_TipoCamion изменится.

Можно ли как-нибудь этого добиться?
Спасибо!

EDIT

Как предлагает Мартин, я реализую INotifyPropertyChange на мою модель и попробуйте подписаться на событие propertychange моей модели следующим образом:

Код: Выделить всё

OrdenTransporte = _svc.OrdenesTransporte_GetById(IDOrden);
OrdenTransporte.PropertyChanged += Model_PropertyChanged;

private void Model_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "ID_Cliente")
{
CargarDirecciones();
}
}
Проблема в том, что когда я подписываю свою виртуальную машину на модель PropertyChange, данные в модели уже изменились, поэтому PropertyChanged никогда не вызывается. Если да:

Код: Выделить всё

OrdenTransporte.PropertyChanged += Model_PropertyChanged;
OrdenTransporte = _svc.OrdenesTransporte_GetById(IDOrden);
событие все равно не запускается, поскольку весь объект заменяется объектом, возвращаемым службой WCF, включая событие INotifyPropertyChange. Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/322 ... -viewmodel
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»