Avatar
mail
Člen
Avatar
mail:

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. května 16:36
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:

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. května 3:36
Avatar
Martin Gabriel:

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. května 8:56
Nahoru Odpovědět 11. května 8:53
"Be the change you want to see in the world" - Michael Scofield
Avatar
mail
Člen
Avatar
mail:

Okej, děkuju moc! :)

 
Nahoru Odpovědět 12. května 11:18
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.