(Поскольку на этот вопрос не было ответов, я переформулировал его)
В моем приложении у меня есть диалоговое окно, содержащее форматированное текстовое поле, поле заполнено твитом, собранным из Твиттера. Используя объекты твитов, я форматирую твит, чтобы он содержал встроенные гиперссылки на ссылки в твите, упоминания и хэштеги. Однако гиперссылки никогда не располагаются правильно; всегда быть на 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" />
Это результат:
Сущность твита имеет правильные индексы для каждой сущности, но я думаю, что в расширенном текстовом поле есть скрытые символы, которые вызывают это смещение.