1

カスタムの元に戻す/やり直しスタックを実装しましたが、それを WPF TextBox で動作させようとしています。

組み込みの元に戻すメカニズムをオフにして、カスタムの元に戻すを Ctrl+Z に接続しました。元に戻す/やり直すたびに、TextBox のキャレットが常にインデックス 0 に移動されていることを受け入れて、すべてが正常に機能します。問題は、これをどのように解決するかです。

TextChanged をリッスンし、テキスト文字列の最後の変更をローカライズしている TextBox でカスタム動作を試してみました。ただし、これは、同じ文字を続けて数回入力しない限り機能します。私の方法は崩壊します。

私が理想的に望んでいるのは、TextBox.Text-property に実際の変更を加えるだけの何らかの動作です。現在は、最後に入力された文字だけが削除されたとしても、元に戻すたびに完全に更新されます。Undo で PropertyChanged をトリガーしている私の PresentationModel の Text プロパティをリッスンするので、これは当然のことです。

しかし、プロパティ値で何が変更されたかを正確に伝える、より詳細な方法があれば、それは素晴らしいことではありません. 次に、TextBox は、その Text-value 全体を更新することなく、それだけを変更できます。TextBox にこれを伝える方法はありますか、またはこのように動作するカスタム TextBox を作成することは可能でしょうか? そうすれば、propertychange-update のたびにキャレットを 0 に戻すことなく、新しいキャレットの正確な位置を特定することができます。

4

0 に答える 0