xaml - wpf - Entity Framework - DataGrid :)

Dyskusje na temat języka C# oraz biblioteki .NET
Wookee
Nowicjusz
Posty: 4
Dołączył(a): wtorek, 4 sierpnia 2015, 10:48

xaml - wpf - Entity Framework - DataGrid :)

Post przez Wookee »

Witam serdecznie

Jestem na świeżo po kursie C#, a właściwie przy jedgo końcowych lekcjach. Po tytułach sądząc ten temat nie będzie poruszony, więc pozwoliłem sobie zadać pytanie.

Mam małą aplikację na formsach, którą po zainspirowaniu kursem chcę powoli przerabiać na WPF. Mam wygenerowany model Entity Framework do bazy na MS SQL. Mogę tworzyć listy obiektów List of T. Mogę też je bindować do DataGrit itd.. Nawet działa i sortuje.

Na stronach Microsoft wyczytałem, że generalnie do poprawnej pracy z DataGrid należy stosować ObservableCollection - https://msdn.microsoft.com/pl-pl/librar ... .110).aspx Chodzi o grupowanie, filtrowanie no i sortowanie też.

Problem mam w tym, że należy utworzyć klasę, która dziedziczy po ObservableCollection. I to nawet mi się udało z bindowaniem włącznie. Tylko jak mam dodać tam listę obiektów z tabel, a właściwie z Entity Framework? Zawsze tworzyłem listę, którą po prostu dodawałem jako źródło w forlsach. Teraz konstruktorem mogę przekazać model, a tam za pomocą dajmy na to Linq wyciągnąć listę. Ale jak się do tego z xamla odwołać.

Mam nadzieję, że w miarę czytelnie sformułowałem pytanie, bo jestem zupełnym samoukiem. No może kursy video robiłem :)
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: xaml - wpf - Entity Framework - DataGrid :)

Post przez Morfidon »

Hej,

Bardzo chętnie bym Ci pomógł niestety nie mam dużego doświadczenia z frameworkiem o którym napisałeś :(

Jak masz zamiar zrobić coś niestandardowego to możesz skorzystać z tego co przedstawiam w lekcji 28 i 29

Pozdrawiam
Wookee
Nowicjusz
Posty: 4
Dołączył(a): wtorek, 4 sierpnia 2015, 10:48

Re: xaml - wpf - Entity Framework - DataGrid :)

Post przez Wookee »

Hmm, ale to standardowy Framework Microsoftu.

Może coś nie tak napisałem, czy źle ująłem :)

Tworze sobie za pomocą Add New Item
Wybieram ADO.NET Entity Data Model
Nazywam go sobie Jakoś
Wybieram EF Designer From database
Tworzę lub wskazuję połączenie
Wybieram wersję. Na przykład 6.x
ITD.
Później wybieram jakieś tam tabele z jakiejś bazy danych i tworzy się model.


Oki. Teraz mogę się odwoływać do tego modelu. Dotychczas tworzyłem listy obiektów przykładowo tak:
List<JakiśObiektZEntityFramework> listaObiektow = new ....

Następnie przy pomocy Linq wczytywałem odpowiednio przefiltrowaną listę i przypinałem ją do BindingSource. Jakoś to działało i właściwie teraz też działa.

Skoro zabrałem się teraz za w miarę profesjonalne podejście no to czytam bo tego akuratnie w kursach nie było. Więc gdzie? Na MSDNie, a tam podają, że należy stosować nie ListOf<T>.

Tamat: Jak grupować, sortować i filtrować dane w DataGrid kontrolce
Link: https://msdn.microsoft.com/pl-pl/librar ... .110).aspx

Tak jak pisałem. Dotychczas robiłem jakąś listę obiektów w danym formularzu i bindowałem. Microsoft z tego co rozumiem zaleca zrobić klasę, która dziedziczy po ObserveCollection:

// Requires using System.Collections.ObjectModel;
public class Tasks : ObservableCollection<Task>
{
// Creating the Tasks collection in this way enables data binding from XAML.
}


I wszystko ok, tylko jak wczytać do tej kolekcji listę obiektów z wygenerowanego modelu na podstawie tabel. Samo podbindowanie w xaml dzięki Twoim lekcjom zrobiłem, ale lista jest pusta. Nie wiem jak przekazać model, który mógłby być źródłem danych do nowo tworzonego obiektu przy pomocy xaml. Normalnie przekazał bym go na przykład konstruktorem, tylko nie było potrzeby bo stosowałem listy jak już pisałem. A tu to nie mam pojęcia co robić :(


Wiem, że się rozpisałem, ale chcę w miarę czytelnie przedstawić o co mi kaman, bo nie jestem typowym informatykiem z wykształcenia i mogę troszkę mieszać nieumyślnie. Jak Ci się uda przez to przebrnąć to poproszę o podpowiedź. Jeżeli nie, to może sam jakoś to rozgryzę to napiszę później. Może komuś się przyda.

Pozdrawiam serdecznie
Post Reply