Diskuze: WPF refresh listboxu.

C# .NET .NET (C# a Visual Basic) WPF refresh listboxu. American English version English version

Avatar
Libor Šimo (libcosenior):

Vždy po zadaní nového záznamu, alebo po úprave starého nechávam zoradiť kolekciu. Problém je v tom, že potrebujem, aby sa mi aj refrešol listbox, dôležité je však, aby sa refrešol aj s pridanými záznamami, pretože ak vyhľadávam, posúva mi to výsledky. Aby som videl zmenu v listboxe, musím vypnúť a zapnúť aplikáciu a to je neúnosné.
Používam ListBox.Items­.Refresh().
Predpokladám, že ste sa s podobným problémom už stretli a dúfam, že niekto poradí.

Odpovědět 1.9.2015 19:17
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Michael Škrášek:

já je vždycky všechny vymazal a znovu načetl ;)

Nahoru Odpovědět 1.9.2015 19:51
Proč to dělat složitě, když to jde jednoduše.
Avatar
Odpovídá na Michael Škrášek
Libor Šimo (libcosenior):

Vymazal si obsah listboxu? Ako? ListBox.Clear­Value()? Čo si dal do zátvorky? Nevedel som, čo tam dať.

Nahoru Odpovědět 1.9.2015 20:07
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Ešte som videl ListBox = null a potom znovu načítať, ale nefungovalo mi to.

Nahoru Odpovědět 1.9.2015 20:12
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Michael Škrášek:

Mysli takto, jestli ne tak se kouknu

ListBox.Items.Clear();
Nahoru Odpovědět 1.9.2015 20:29
Proč to dělat složitě, když to jde jednoduše.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
patrik.valkovic:

Našel jsem tohle.
http://stackoverflow.com/…stbox-in-wpf

Musíš zavolat ListBox.Invali­dateArrange a potom ListBox.Update­Layout.

Nahoru Odpovědět 1.9.2015 20:39
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Nahoru Odpovědět 2.9.2015 5:34
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Michal Štěpánek:

Ve WPF existuje ObservableCollec­tion, která umí reagovat na změny v datech.
http://www.itnetwork.cz/…gicka-vrstva

Nahoru Odpovědět 2.9.2015 8:38
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Libor Šimo (libcosenior):

To máš pravdu a používam to. Ale to funguje len na kontrolky ako sú napríklad label, textbox, textblock ...., na listbox to nefunguje.

Nahoru Odpovědět 2.9.2015 8:47
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Libor Šimo (libcosenior):

Teda to vlastne funguje keď napríklad pridám nový záznam, ale keď napríklad zoradím záznaky v kolekcii, nefunguje to a práve to je môj problém.

Nahoru Odpovědět 2.9.2015 8:50
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Nahoru Odpovědět 2.9.2015 9:08
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na patrik.valkovic
Libor Šimo (libcosenior):

Nebude to až také jednoduché, nefunguje to a zatiaľ to nebudem riešiť, mám pred sebou dokončenie logickej časti.
Neskôr pri vychytávkach sa na to pozriem dôkladnejšie.

Nahoru Odpovědět 2.9.2015 15:38
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Michal Štěpánek:

Pokud potřebuješ při změně znovu načíst data do listboxu, tak musíš vyprázdnit tu kolekci a znovu ji načíst. Pak se ti upraví i listbox. Takže si před naplněním kolekce dej

kolekce.Clear();

a pak ji znovu naplň...

Nahoru Odpovědět 2.9.2015 20:52
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Libor Šimo (libcosenior):

Díky, to ma nenapadlo, len dúfam, že to nebude mať veľký vplyv na rýchlosť aplikácie.
Po práci to vyskúšam.

Nahoru Odpovědět 3.9.2015 7:11
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Michal Štěpánek:

Nemyslím si, že to bude mít nějaký vliv na rychlost aplikace. Pokud používáš jako zdroj dat pro listbox kolekci dat, tak plnění, změny apod. musíš vždycky provádět na té kolekci a pak to načítat do listboxu, bo jinak tě to udělat nenechá...

Nahoru Odpovědět 3.9.2015 22:57
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Libor Šimo (libcosenior):

Písal som to preto, že po zmene (pridanie, úprava) sa kolekcia automaticky uloží do xml súboru. Podľa tvojej rady potom kolekciu vyprázdnim a znovu naplním s xml súboru a to si myslím, že môže trošku spomaliť program.

Nahoru Odpovědět 4.9.2015 8:30
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Michal Štěpánek
Libor Šimo (libcosenior):

Včera som nemal čas to otestovať, tak hádam dnes to vyjde.

Nahoru Odpovědět 4.9.2015 8:31
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Michal Štěpánek:

Tahám z xml souboru přes tisíc záznamů podle různých kritérií a žádné zpomalení nepozoruji...

Nahoru Odpovědět 4.9.2015 10:55
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Michal Štěpánek
Libor Šimo (libcosenior):

Vyskúšal som to, ale nefunguje.

skladnik.Uloz(skladnik.DhmZaznamy, "DhmData.xml");
skladnik.DhmZaznamy.Clear();
skladnik.DhmZaznamy = skladnik.Nacitaj<ObservableCollection<DhmZaznam>>("DhmData.xml");

ListBox sa vyprázdni, ale aj ostane prázdny. Ešte tam musí byť nejaká finta, aby to pracovalo.

Nahoru Odpovědět 10.9.2015 18:34
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Libor Šimo (libcosenior):

Božinku, ono stačí refrešnúť listbox.

DhmOsobaListBox.Items.Refresh();

Takže žiadne mazanie a znovu načítanie.

Akceptované řešení
+5 Zkušeností
Řešení problému
Nahoru Odpovědět 10.9.2015 18:50
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 20 zpráv z 20.