 |
Coders' city Nasza pasja to programowanie!
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Grzegorz123
Dołączył: 27 Cze 2017 Posty: 188
|
Wysłany: Nie Sty 20, 2019 8:58 pm OP Temat postu: [WPF C#] Sortowanie elementów kolekcji |
|
|
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 |
|
 |
|
samolot
Dołączył: 26 Sty 2006 Posty: 8376 Skąd: Toru?
|
Wysłany: Nie Sty 20, 2019 11:04 pm Temat postu: |
|
|
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 |
|
 |
Grzegorz123
Dołączył: 27 Cze 2017 Posty: 188
|
Wysłany: Pon Sty 21, 2019 10:22 am OP Temat postu: |
|
|
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 |
|
 |
Sinus32
Dołączył: 20 Sty 2007 Posty: 910
|
Wysłany: Pon Sty 21, 2019 9:04 pm Temat postu: |
|
|
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 |
|
 |
Grzegorz123
Dołączył: 27 Cze 2017 Posty: 188
|
Wysłany: Wto Sty 22, 2019 2:52 pm OP Temat postu: |
|
|
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 |
|
 |
Sinus32
Dołączył: 20 Sty 2007 Posty: 910
|
Wysłany: Wto Sty 22, 2019 5:07 pm Temat postu: |
|
|
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 |
|
 |
|
|
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.22421 sekund, zapytan = 11
|