是否可以将TextPointer转换为Integer

时间:2015-06-22 14:58:18

标签: c# .net

我一直在编辑一些长期存在的代码来实现一些新功能。这需要使用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,如果是,它是如何完成的?

由于

1 个答案:

答案 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);