Vážení,
Mám objektový model, ktorého členovia "(objekty)"Vlastnosti môžu byť zmenené pomocou PropertyGrid a UI (PopupMenu atď.). Hľadám podporu UndoRedo v tomto prípade a záujem design Command Pattern. Ako som pochopil, zmena akejkoľvek vlastnosti prostredníctvom PropertyGrid by mala byť zaregistrovaná v zásobníku UndoRedo, avšak vrátenie tejto operácie sa rovná zmene tejto vlastnosti na starú hodnotu - a Infinite Loop? Poznáte v tomto prípade nejaký najlepší postup?
Vďaka.
odpovede:
1 pre odpoveď č. 1Predpokladám, že akcia Undo sa nemusí považovať za zmenu.
Máte zbierku zmien. Keď urobíte zmenu, pridáte položku do tejto kolekcie. Ak urobíte vrátenie späť, jednoducho prepnete aktuálny stav do stavu [i-1]. Ak urobíte opakovanie, prepnete aktuálny stav do stavu [i + 1]. Ak ste urobili niekoľko spätných príkazov a potom vykonáte zmenu, začnete písať odtiaľ a prepíšete všetky možné zmeny.