MVVM WPF Лучший способ обеспечить актуальность ViewModel с помощью бизнес-уровня / серверной части - PullRequest
0 голосов
/ 25 августа 2010

Я пытаюсь использовать MVVM в своем приложении WPF, которое отображает данные из класса на уровне бизнес-логики с именем «Сотрудник» со свойством «Зарплата».У меня есть простое окно XAML с текстовым полем с привязкой к свойству Salary в классе ViewModel «EmployeeViewModel».ViewModel реализует INotifyPropertyChanged, поэтому при изменении свойства Salary EmployeeViewModel значение в текстовом поле XAML также изменяется.Все это прекрасно работает.

Теперь свойство Salary EmployeeViewModel получает свое значение из свойства Salary класса Employee.Однако, если значение Salary класса Employee изменяется с помощью какой-либо другой процедуры, выполняемой на уровне бизнес-логики, оно не обновляется автоматически в EmployeeViewModel.Каков наилучший способ заставить это сделать это?Я думал о какой-то реализации INotifyPropertyChanged в классе Employee, которая позволила бы знать EmployeeViewModel об обновлении себя.Или я должен использовать свойство зависимости?Или я должен иметь процедуру, которая «обновляет» ViewModel после того, как все изменения в уровне бизнес-логики были выполнены.Любая помощь приветствуется!

Ответы [ 2 ]

0 голосов
/ 25 августа 2010

Мои мысли

если вы внедрите INotifyPropertyChanged в своей организации, вы создадите связь между вашей организацией и вашей моделью представления.

Ваша модель не должна зависеть от конкретной функции, такой как INotifypropertychanged.

2 - Если вы используете Prism Framework, используйте EventAgreegator, который является чистым развязанным способом связи между модулями.

3 - ваш третий вариант звучит хорошо для меня, когда вы говорите: «У меня есть процедура, которая« обновляет »модель представления после того, как все изменения в слое бизнес-логики завершены» * *

0 голосов
/ 25 августа 2010

Я настоятельно рекомендую вам реализовать INotifyPropertyChanged на вашем бизнес-объекте (Сотрудник) и зарегистрироваться для внесения изменений в вашу модель представления.

Если вы действительно хотите оставить как можно больше poco , вы можете просто объявить интерфейс и добавить открытый метод, который называется RaisePropertyChanged (string propertyName), и просто вызывать его, когда закончится логика вашего бизнеса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...