[WPF] DataGrid, Entity Framework, two way binding
От: Barlog M. Россия  
Дата: 13.01.11 10:06
Оценка:
Здравствуйте.

Поделитесь пожалуйста примером, как привязать entity коллекцию к DataGrid, чтобы отображались в гриде изменения, сделанные с entity?
Если делать так, как делает визуальный редактор в Visual Studio 2010, то изменения идут только от DataGrid к entity коллекции.
Re: [WPF] DataGrid, Entity Framework, two way binding
От: Barlog M. Россия  
Дата: 17.01.11 09:32
Оценка: +1
Отвечаю сам себе, может кому-нибудь пригодится.

Изменения в ObjectSet<> не отображаются в DataGrid по той причине, что ObjectSet<> не реализует интерфейс INotifyCollectionChanged. (MS обещает это только в следующей версии).
Поэтому нормально привязать к DataGrid можно только ObservableCollection<>.

ObservableCollection<MyEntity> list = ObservableCollection<MyEntity>(context.MyEntites);
dataGrid.ItemsSource = list;


Новый объект соответственно добавлять к list, в context.MyEntites он попадёт автоматом.

Странно, что никто не ответил, неужели так непопулярен DataGrid в связке с Entity Framework? По-моему очень удобно для не сложных проектов.
Re[2]: [WPF] DataGrid, Entity Framework, two way binding
От: Аноним  
Дата: 12.02.11 15:09
Оценка:
BM>
BM>ObservableCollection<MyEntity> list = ObservableCollection<MyEntity>(context.MyEntites);
BM>dataGrid.ItemsSource = list;
BM>


а можно подробнее описать что такое MyEntity а особенно context.MyEntites?
Re[2]: [WPF] DataGrid, Entity Framework, two way binding
От: VetalPPC  
Дата: 01.04.11 14:09
Оценка:
Здравствуйте, Barlog M., Вы писали:

BM>
BM>ObservableCollection<MyEntity> list = ObservableCollection<MyEntity>(context.MyEntites);
BM>dataGrid.ItemsSource = list;
BM>

BM>Новый объект соответственно добавлять к list, в context.MyEntites он попадёт автоматом.

А что нужно сделать, чтобы новый объект попадал из list в context.MyEntites автоматически? По умолчанию этого не происходит.
Re[3]: [WPF] DataGrid, Entity Framework, two way binding
От: dmitry_npi Россия  
Дата: 04.04.11 07:32
Оценка:
Здравствуйте, VetalPPC, Вы писали:

VPP>Здравствуйте, Barlog M., Вы писали:


BM>>
BM>>ObservableCollection<MyEntity> list = ObservableCollection<MyEntity>(context.MyEntites);
BM>>dataGrid.ItemsSource = list;
BM>>

BM>>Новый объект соответственно добавлять к list, в context.MyEntites он попадёт автоматом.

VPP>А что нужно сделать, чтобы новый объект попадал из list в context.MyEntites автоматически? По умолчанию этого не происходит.


IMHO, нужно следовать архитектуре MVVM. list — это должно быть свойство ViewModel. Синхронизация этого листа с entity коллекциями — также забота ViewModel.

MVVM не решит эти проблемы как таковые, но зато позволит разбить программу на слои с четко определенной ответственностью. И тогда даже большое количество рутинного кода, всяких адаптеров и костылей не превратит ее (программу) в помойку.
Атмосферная музыка — www.aventuel.net
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.