Diskuze: WPF refresh listboxu.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 20 zpráv z 20.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
já je vždycky všechny vymazal a znovu načetl
Vymazal si obsah listboxu? Ako? ListBox.ClearValue()? Čo si dal do zátvorky? Nevedel som, čo tam dať.
Ešte som videl ListBox = null a potom znovu načítať, ale nefungovalo mi to.
Mysli takto, jestli ne tak se kouknu
ListBox.Items.Clear();
Našel jsem tohle.
http://stackoverflow.com/…stbox-in-wpf
Musíš zavolat ListBox.InvalidateArrange a potom ListBox.UpdateLayout.
Ve WPF existuje ObservableCollection, která umí reagovat na změny v
datech.
http://www.itnetwork.cz/…gicka-vrstva
To máš pravdu a používam to. Ale to funguje len na kontrolky ako sú napríklad label, textbox, textblock ...., na listbox to nefunguje.
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.
Ak ťa zaujíma, ako to zatiaľ funguje, stiahni si to a otestuj: http://skolka-jazyka-c.freespace.sk/…oad/file.php?…
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.
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ň...
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.
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á...
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.
Včera som nemal čas to otestovať, tak hádam dnes to vyjde.
Tahám z xml souboru přes tisíc záznamů podle různých kritérií a žádné zpomalení nepozoruji...
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.
Božinku, ono stačí refrešnúť listbox.
DhmOsobaListBox.Items.Refresh();
Takže žiadne mazanie a znovu načítanie.
Zobrazeno 20 zpráv z 20.