(この質問は回答が得られていないため、言い直しました)
私のアプリケーションには、リッチ テキスト ボックスを保持するダイアログがあり、ボックスには 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" />
これは出力です:
ツイート エンティティには各エンティティの適切なインデックスがありますが、Rich Text Box にはこのオフセットの原因となっている隠し文字があると思います。