WPFでcanvasに図形が追加されるたびにその状態を保存してUndoRedo機能を作りたいです
stack<t>にcanvasを入れれば実装できると考えていたのですが出来ませんでした
stackの中身を見てみるとcanvasが全て最新のものになっていました
理想
@図形追加
→stack1 canvas(図形一個だけ)
A図形追加
→stack1 canvas(図形一個だけ)
→stack2 canvas(図形2個)
B図形追加
→stack1 canvas(図形一個だけ)
→stack2 canvas(図形2個)
→stack3 canvas(図形3個)
実際
@図形追加
→stack1 canvas(図形一個だけ)
A図形追加
→stack1 canvas(図形2個)
→stack2 canvas(図形2個)
B図形追加
→stack1 canvas(図形3個)
→stack2 canvas(図形3個)
→stack3 canvas(図形3個)

this.canvasをstackにpopで格納しているのですが恐らく参照型になっている(?)のかと思います
どうすれば解消されるか教えてください