Я помню, как использовал статью , когда боролся с UpdateSourceTrigger Explicit.Позже у меня возникла та же проблема (мне нужен был доступ к представлению Controls).Именно тогда я обнаружил, что модель представления - это не то, что поддерживает состояние представления WPF, а способ представления данных, и в этом случае ваши данные представляют собой некоторые объекты, гидратированные из базы данных.
Iбыло бы что-то вроде этого:
[Модель представления WPF -> Модель представления сущности] -> Перевод сущности ВМ в сущность -> База данных.
Вместо этого в вашей ViewModel:
public ObservableCollection<MyEntity> MyEntities
Имейте это:
public ObservableCollection<MyEntityViewModel> MyEntities
Где MyEntityViewModel
- VM моего Entity
Позвольте мне объяснитьнемного больше: модель представления WPF должна представлять данные, завернутые в виртуальную машину.Это для целей презентации.Что произойдет, если у вас довольно сложный демографический граф объектов, но вам нужно только отобразить имя, дату рождения и Quantum ?Намного проще создать объект модели представления, чтобы обернуть эти три свойства, чем перемещаться по графу объекта.Вот почему существуют такие инструменты, как automapper .
В чем выгода всего этого?
Вам не нужно подделывать граф объектов для проведения тестов
Вы не привязываете свои сущности к ViewModel.Если вы отменяете, вам не нужно делать повторное получение или что-то в этом роде.вы не трогаете все, кроме случаев, когда проверка завершается успешно.
Конечно, это может не подходить для всех сценариев, и, возможно, вы можете придумать что-то промежуточное.
НТН