NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
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.