(由于这个问题没有得到任何答案,我已经重新措辞了)
在我的应用程序中,我有一个包含富文本框的对话框,该框充满了从 Twitter 收集的推文。使用推文实体,我将推文格式化为具有指向推文、提及和主题标签中链接的内联超链接。但是,超链接永远不会正确定位;总是太快太远了 2 或 3 个字符。
这是我用来在富文本框中设置文本的代码:
TweetText.Document.ContentEnd.InsertTextInRun(Status.Text)
Dim FlowDocument As FlowDocument = TweetText.Document
If LinkEntity.Count > 0 Then
For Each Entity As Entities.TwitterUrlEntity In LinkEntity
Dim Start As TextPointer = FlowDocument.ContentStart
Dim StartPosition As TextPointer
Dim EndPosition As TextPointer
If Entity.StartIndex = 0 Then
StartPosition = Start.GetPositionAtOffset(Entity.StartIndex)
Else
StartPosition = Start.GetPositionAtOffset(Entity.StartIndex)
End If
EndPosition = Start.GetPositionAtOffset(Entity.StartIndex + Entity.DisplayUrl.Length, LogicalDirection.Backward)
Dim h As New Hyperlink(StartPosition, EndPosition)
AddHandler h.MouseLeftButtonDown, AddressOf Hyperclick_Link
h.NavigateUri = New Uri(Entity.Url)
h.Cursor = Cursors.Hand
Next
End If
'I have the other entities here, they have very similar code'
TweetText.Document = FlowDocument
这是我的富文本框 XAML:
<RichTextBox Name="TweetText" Margin="5" FontSize="14" BorderThickness="0" IsReadOnly="True" />
这是输出:
推文实体对每个实体都有适当的索引,但我确实认为富文本框具有导致此偏移的隐藏字符。