2011-12-18 7 views

答えて

-1

まず、元に戻すボタンにコマンドをバインドします。 これに似たCommandBindingを書く: <CommandBinding Command="Undo" Executed="ExecuteUndo" CanExecute="CanExecuteUndo"/>

次に、この

{Binding myUndoManager.CurrentContent, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}

myUndoManagerのようなものにリッチテキストボックスのContentを設定することはUndoManagerクラスの型としたDependencyPropertyです。このクラスを実装し、それをDependencyObjectINotifyPropertyChangedから継承する必要があります。このクラスでは、CurrentContentDependencyPropertyであり、表示する適切なコンテンツを保持し、PropertyChangedイベントはRichTextBoxのContentのすべての変更を処理します。 (クラスにコレクションを追加できます。このイベントの呼び出しごとに、コレクションに新しいアイテムを追加します。このコレクションのアイテムのタイプには、TextDifferences、ActionTypeなどのプロパティがあります)

それでは、コードの中にCanExecuteUndoExecuteUndoの本文を実装するだけです。 e.CanExecuteは、コレクションが空でない場合にだけ、CanExecuteUndo内をtrueに設定します。そして、ExecuteUndoコレクションから最後の項目を飛び出し、そのActionTypeし、必要なアクションに応じてすることができる)

ドン」 myUndoManagerオブジェクトがウィンドウと同じクラスにある場合は、ウィンドウのDataContext(またはRichTextBox)を{Binding RelativeSource={RelativeSource Self}}に設定することを忘れないでください。

関連する問題