Насколько мне известно, классы объектов, которые привязываются к контролам во View, должны реализовывать интерфейс INotifyPropertyChanged. Допустим, я получаю из репозитория коллекцию сущностей EF. По всей видимости, передавать эту коллекцию напрямую во View - неправильно. Следовательно, нужно во ViewModel создать "обёртку" для этой коллекции? Использовать new ObservebleCollection()? Как сделать это грамотно?
Asked
Active
Viewed 257 times
3
-
Это достаточно обширный вопрос. Посмотрите здесь (предупреждаю, много текста). – VladD Jan 26 '16 at 11:52
-
"получаю из репозитория коллекцию сущностей EF." -- на уровне кода есть классы. и есть экземпляры, которые создаются в DbContext и в эти объекты записываются данные полученные из бд. но вы можете сами создать в своем коде создать и заполнить эти объекты. т.е. нет каких-то особых "сущностей EF". – Stack Jan 26 '16 at 11:55
-
1@Stack, https://msdn.microsoft.com/ru-ru/library/bb387161(v=vs.110).aspx – klutch1991 Jan 26 '16 at 12:04
-
@klutch1991 +1, но у вас Code First? и там сказано: "задавая в коде определения классов". т.е. в коде есть классы, а DbContext занимается десериализаций данных, полученных из базы. представьте, что его нет и вы создаете объекты вручную. как их передавать "во View" - известно. через DataContext. точно также можно передать объекты, которые были созданы в DbContext. – Stack Jan 26 '16 at 12:21
-
@Stack, да, я использую Code First. Вопрос заключается скорее в том, как преобразовать объекты модели EDM в объекты модели паттерна MVVM. – klutch1991 Jan 26 '16 at 12:27
-
@klutch1991 "как преобразовать объекты модели" -- объекты, полученные через DbContext, можно просто передать в DataContext. Но если надо соблюдать MVVM, то объекты надо обернуть в объекты ViewModel. – Stack Jan 26 '16 at 12:42
-
@klutch1991 если надо сделать много оберток, то см. http://ru.stackoverflow.com/a/484929/196972 – Stack Jan 26 '16 at 12:56
-
@Stack, А как быть, если мне нужно, скажем, передать на вьюшку целую коллекцию объектов, которые нужно отобразить в ListView, или в DataGrid? – klutch1991 Jan 26 '16 at 13:07
-
@klutch1991 "передать на вьюшку целую коллекцию объектов," -- так же как и обычный объект. просто в xaml будет привязка к элементам коллекции, и потом к свойствам элемента/объекта. – Stack Jan 26 '16 at 13:11