Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[WPF C#] Sortowanie elementów kolekcji



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio: C#, VB, VC++, …
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 188

PostWysłany: Nie Sty 20, 2019 8:58 pm  OP    Temat postu: [WPF C#] Sortowanie elementów kolekcji Odpowiedz z cytatem Pisownia

Mam kolekcj? LabelSet sk?adaj?c? si? z wielu elementów typu
- EL_Line
- EL_Rectangle
- EL_TextBox
- EL_Graphics
chcia?bym je posortowa? wg typu w kolejno?ci Descending.

Do kolekcji u?ytkownik dodaje elementy w przypadkowej kolejno?ci, nie wiem jak s? indeksowane elementy, zapewne od 0 ... n. W efekcie sortowania najwa?niejsze jest, ?eby elementy EL_Graphics by?y zawsze na ko?cu.

Czy da si? to jako? w miar? prosto zrobi? ?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8376
Skąd: Toru?

PostWysłany: Nie Sty 20, 2019 11:04 pm      Temat postu: Odpowiedz z cytatem Pisownia

Elementy w kolekcji s? "u?o?one", ?e tak powiem, w kolejno?ci takiej, jaka wynika ze zdarze? w programie, czyli ani malej?co, ani rosn?co wzgl?dem alfabetu czy wzgl?dem liczb.
je?li niektóre elementy s? usuwane z kolekcji, to pami?? po nich jest "zagospodarowana" przez kompilator dla innych elementów w sposób znany tylko jemu i zapewne autorom kompilatora. Mnie swego czasu te? to by?o potrzebne i, prawd? mówi?c, nie uda?o si? tego zg??bi? przy pomocy bardziej zaawansowanych u?ytkowników tego forum. Z do?wiadczenia mog? powiedzie?, ?e elementy dodane do niej najpó?niej b?d? na samym ko?cu.
Ponadto elementy kolekcji nie maj? indeksów. Nie mo?na z niej pobra?, na przyk?ad, elementu o indeksie 4. Ale mo?na z niej pobra? wszystkie elementy z pomoc? p?tli For Each do, na przyk?ad, Listy, ArayListy czy do Tablicy. Tak wi?c wg mnie, samo trzymanie elementów w kolekcji jest po?yteczne w kodzie programu, ale na potrzeby u?ytkownika trzeba je pobra? z kolekcji do na przyk?ad tablicy, bo wtedy mo?emy je posortowa? rosn?co, czy malej?co i u?ytkownikowi pokaza? posortowane.

A je?li ty chcesz by elementy o nazwach "EL_Graphics" by?y zawsze na ko?cu, to proponuj? do nazw doda? prefiks na przyk?ad z dwóch podkre?lników, nast?pnie posortowa? w trybie Ascending. Wtedy wszystkie z podkre?lnikami znajd? si? na pocz?tku tablicy. Nast?pnie przepisa? do nowej tablicy najpierw tylko elementy bez tego prefiksu, a nast?pnie te z podkre?lnikami pozbawi? prefiksu, posortowa? w trybie Ascending i w takiej postaci dopisa? do tej nowe tablicy. W tym momencie trzeba pami?ta? o tym, ?eby ta tablica mia?a zdezaktywowane automatyczne sortowanie, bo taka w?a?ciwo?? mog?aby zniweczy? ca?y wysi?ek nietypowego sortowania. No i w takiej postaci mo?na t? list? nazw wy?wietli? u?ytkownikowi.
Tak bym ja to zrobi?.
Tylko pami?taj, ?e u?ytkownikowi pokazujesz tylko nazwy etykiet z kolekcji, a nie same etykiety. Wi?c po wybraniu przez u?ytkownika konkretnej nazwy etykiety, program powinien zaplanowan? operacje wykona? na etykiecie w kolekcji, która ma t? nazw?. Ale to jest chyba zrozumia?e.

_________________
Nie zadawaj bezcelowych pyta? / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 188

PostWysłany: Pon Sty 21, 2019 10:22 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

No w?a?nie chcia?em unikn?? takiego rozwi?zania - ale je?li si? nie da, to trudno.
Rozwa?a?em te? zrobienie kopii kolekcji, usuni?cie elementów z oryginalnej i dodawaniu elementów z kopii w odpowiedniej kolejno?ci bo to by upro?ci?o wiele innych aspektów, których nie poruszy?em w po?cie.
For each element in kopia
   if ! element is EL_Graphics
      doda?

For each element in kopia
   if element is EL_Graphics
      doda?

Jako? tak, mo?e niezbyt optymalnie ale przy kilku, kilkunastu elementach kolekcji bez znaczenia.

Có? b?d? dalej próbowa?, dzi?kuj? za wyja?nienia i pomoc.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Sinus32



Dołączył: 20 Sty 2007
Posty: 910

PostWysłany: Pon Sty 21, 2019 9:04 pm      Temat postu: Odpowiedz z cytatem Pisownia

W WPF mo?esz wykorzysta? CollectionViewSource jako po?rednika pomi?dzy kolekcj? danych a widokiem. W CollectionViewSource mo?na zdefiniowa? sortowanie wed?ug którego maj? pojawia? si? elementy.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 188

PostWysłany: Wto Sty 22, 2019 2:52 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dzi?ki Sinus32, poczyta?em w google o tym troch? ale to chyba jeszcze nie mój poziom. Jestem jeszcze do?? "cienki" i cz?sto nie rozumiem podstawowych zagadnie?, ucz? si? ci?gle. Opcja wydaje si? interesuj?ca spróbuj? to jako? zrozumie? i mo?e uda si? zaimplementowa?.

?wiadomo?? mo?liwo?ci i tego co si? potrafi zrobi? bywa mocno frustruj?ca :-)
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Sinus32



Dołączył: 20 Sty 2007
Posty: 910

PostWysłany: Wto Sty 22, 2019 5:07 pm      Temat postu: Odpowiedz z cytatem Pisownia

Podrzu? nieco kodu w xaml`u to mo?e uda si? co? wykmini?. Na pewno przyda si? fragment odpowiedzialny za rysowanie elementów podpi?tych pod kolekcj?.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio: C#, VB, VC++, … Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.23118 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |