我一直在编辑一些长期存在的代码来实现一些新功能。这需要使用richtextbox替换文本框,同时保持现有实现相同。富文本框具有与文本框相当的属性,直到我得到caretindex。原始行(适用于文本框)是:
this.ViewModel.Body = this.ViewModel.Body.Insert(this.txtEditor.CaretIndex, link);
所以当我将“txtEditor”更改为richtextbox时我实现了这个:
this.ViewModel.Body = this.ViewModel.Body.Insert(this.txtEditor.CaretPosition, link);
我相信这些是相似的,但是“Caret Position”是TextPointer类型,而“CaretIndex”是一个整数,Body.Insert方法只接受一个整数作为它的第一个参数。
有没有办法将TextPointer转换为Integer,如果是,它是如何完成的?
由于
答案 0 :(得分:1)
这有点令人费解,但有可能使用一些黑客获取插入索引:
var start = txtEditor.Document.ContentStart;
var here = txtEditor.CaretPosition;
var range = new TextRange(start, here);
int indexInText = range.Text.Length;
使用:
this.ViewModel.Body = this.ViewModel.Body.Insert(indexInText, link);