Avatar
Jakub Lásko[Saarix]:

Zdravím dělám si ve WPF takový manažer úkolů a používám Binding, ale mám menší problém s Refreshem. Při loadu page nastavím DataGridu ItemSource na svůj List<Ukoly> a pak jakmile přidám nový záznam do onoho listu, tak se v DataGridu neobjeví. Nenašel jsem žádnou metodu k Refreshi... poradil by někdo prosím?

Odpovědět 11.11.2013 16:32
Časem je vše možné.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Jakub Lásko[Saarix]
David Čápka:

Ve WPF zatím neumím, ale List bindingy neumí, zkus to dát do BindingListu.

Nahoru Odpovědět  +1 11.11.2013 17:04
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Jakub Lásko[Saarix]:

Jojo v BindingListu už je dostupná metodu ResetBindings :-) takže si s tím pohraji a bude to fungujovat perfektně. Díky moc za navedení.

Nahoru Odpovědět 11.11.2013 17:24
Časem je vše možné.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Jakub Lásko[Saarix]
David Čápka:

Nemusíš volat žádnou metodu, od toho je ten binding :D Jakmile do listu něco přidáš, tak se to přidá i do té kontrolky.

Nahoru Odpovědět 11.11.2013 17:25
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Jakub Lásko[Saarix]:

A už funguje :-) fíha docela rychlá editace kódu.

Nahoru Odpovědět 11.11.2013 17:26
Časem je vše možné.
Avatar
Odpovídá na Jakub Lásko[Saarix]
Jakub Lásko[Saarix]:

Jo to ano, já tu jen mám metodu SetDataSource, protože měním mezi X BindingListy, ale šlo o to, jakmile se nezměnil source, ale přidal se item, tak nedošlo k refreshi, což už nyní ano.

Nahoru Odpovědět 11.11.2013 17:27
Časem je vše možné.
Avatar
Odpovídá na David Čápka
Jakub Lásko[Saarix]:

Ale musím říct, že ten Binding je fakt úžasný... jedna radost s tím pracovat 8-)

Nahoru Odpovědět  ±0 11.11.2013 17:31
Časem je vše možné.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Jakub Lásko[Saarix]
David Čápka:

Jo, zrovna o tom píšu v Javě :) Dávám ho do všech seriálů, aby se to lidí naučili. Hlavně počítej s tím, že se to refreshuje jen při změně toho listu, ne při změne jeho položky. Ale i to se dá udělat, musíš u položky implementovat rozhraní IPropertyChanged nebo tak nějak, někdy jsem tu o tom psal :P

Nahoru Odpovědět 11.11.2013 17:33
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Jakub Lásko[Saarix]:

Jojo toto rozhraní už mám dávno implementované :-) Je to jedna z hlavních vlastností mého "manažeru".

Nahoru Odpovědět 11.11.2013 17:38
Časem je vše možné.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Jakub Lásko[Saarix]
Petr Nymsa:

Pokud máš například List tříd Osob tak třída Osoba musí implementovat rozhraní INotifyProper­tyChanged.

Potom (záleží jak si to implementuješ) máš properties své třídy například takto

private int vek;
public int Vek{get {return vek;} set{vek = value; Set("Vek");}}

public event //NejakyEventHandler od ozhraní

private void Set(string property name) // zde zpracuješ událost a předáš property

Metoda Set zajistí oznámení že se změnila hodnota a díky tomu se obnoví všechyn controly které bindují danou property.

Co se týče kolekcí ve WPF máš BindingList, v ModernUI či WP můžeš využít ObservableCollec­tion. Tyto dvě kolekce volají refresh sami. Jiné kolekce by jsi musel implementovat zcela stejně jako jednotlivé properties :)

Nahoru Odpovědět 12.11.2013 7:30
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Jakub Lásko[Saarix]:

Jojo díky moc, to rozhraní a PropertyChange plně chápu, ale šlo jen o to, že jsem zatím nepoužíval BindingList, takže jsem o něm nevěděl. Nyní už vše jede jak má. ;)

Nahoru Odpovědět 12.11.2013 10:04
Časem je vše možné.
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 11 zpráv z 11.