如何將HyperLink插入到特定位置的FlowDocument中?新的HyperLink應該與周圍的文本具有相同的格式 - 除了顏色(應始終爲藍色)和下劃線(應始終加下劃線)。插入HyperLink後,光標應該在新的HyperLink之後。FlowDocument:插入超鏈接並保持格式化
事情我已經嘗試:
TextPointer caretPosition = richTextBox.CaretPosition;
TextPointer insertPosition = caretPosition.IsAtInsertionPosition ? caretPosition : caretPosition.GetInsertionPosition(LogicalDirection.Forward);
string linkTitle = "Stack Overflow";
Run run = new Run(linkTitle);
Hyperlink link = new Hyperlink(run, insertPosition);
link.IsEnabled = true;
link.NavigateUri = new Uri(@"http://www.stackoverflow.com");
richTextBox.CaretPosition = run.ContentEnd;
這工作,但它的周圍文字的新的超鏈接沒有格式化。
this.CaretPosition = this.CaretPosition.GetPositionAtOffset(0, LogicalDirection.Forward);
insertPosition.InsertTextInRun(linkTitle);
Hyperlink link = new Hyperlink(insertPosition, insertPosition.GetPositionAtOffset(linkTitle.Length));
link.IsEnabled = true;
link.NavigateUri = new Uri(@"http://www.stackoverflow.com");
TextPointer positionAfterLink = link.ContentEnd.GetPositionAtOffset(1);
if (!positionAfterLink.IsAtInsertionPosition)
positionAfterLink = caretPosition.GetInsertionPosition(LogicalDirection.Forward);
richTextBox.CaretPosition = positionAfterLink;
這樣就保留了格式。但是有時候,CaretPosition不會在新鏈接結束後設置,而是停留在新鏈接的前面。另外,它對我來說看起來不太健壯。
有沒有人成功地做到了這一點?什麼是正確的方式來做到這一點?