NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: Undo/Redo - STACK

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
Aktivity
Avatar
Martin Pola
Člen
Avatar
Martin Pola:8.5.2016 16:36

Ahoj,
chci vás poprosit, jestli byste mi pomohli vyřešit následující problém...
Chci udělat funkcu Undo/Redo v a ze zadání mám dáno, že to má být přes stack...

děkuju moc za objasnění problému :)

Odpovědět
8.5.2016 16:36
Per Aspera Ad Astra
Avatar
Marian Benčat:11.5.2016 3:36

Použij kolekci stack, co má v sobě c #. Stav komponent si ukládat celý do nějakýho jednoho modelu. Jedna jediná instance. Pro každé změně současný stav uloz na stack. Při tlačítku zpět pak jen výndas ze stacku předchozí stav a ten přiřadís do aktivního. Undo / redo je dokonce navrhovy vzor. Pomůže ti k tomu immutable state a nebo postsharp to má už v sobě

Nahoru Odpovědět
11.5.2016 3:36
Totalitní admini..
Avatar
Martin Gabriel
Tvůrce
Avatar
Martin Gabriel:11.5.2016 8:53

http://www.wpftutorial.net/UndoRedo.html
Tady je pěkně popsaný tutorial, jak na to. :)

Já to řeším stejně jako v tutorialu - mám dva stacky a každou UI změnu ukládám do UndoStacku. Je to hromada práce "navíc", protože pro každou změnu musíš implementovat i krok zpět, ale je to jednoduché a čitelné. :)
Výhodu dvou stacků vidím v tom, že pak můžeš přeskakovat mezi Undo/Redo a žádný ze stavů se Ti neztratí (pokud nepřekročíš nějaký sebou nastavený limit).

EDIT:
http://www.codeproject.com/…on-in-C-Part
Ještě tady je skvělý tutorial i s kódem. Tohle bude pro Tebe možná přijatelnější. ;)

Editováno 11.5.2016 8:56
Nahoru Odpovědět
11.5.2016 8:53
"Be the change you want to see in the world" - Michael Scofield
Avatar
Martin Pola
Člen
Avatar
Martin Pola:12.5.2016 11:18

Okej, děkuju moc! :)

Nahoru Odpovědět
12.5.2016 11:18
Per Aspera Ad Astra
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 4 zpráv z 4.