Setting the associated to the Hyperlink's annotation markers LayoutBox's bounding rectangle as a Popup's PlacementRectangle should do the job in your case. However, if RadRichTextBox is not in its default Flow layout mode, but in Paged layout mode instead, you should modify that bounding rectangle a bit in order the "gaps" between the Document and ScrollBars to be taken into account.
For example, you could use the following code snippet when the Popup should be opened in order to show it under the hyperlink:
HyperlinkRangeStart hyperlink =
LayoutBox hyperlinkLayoutBox = hyperlink.GetAssociatedLayoutBoxes().FirstOrDefault();
Popup popup =
popup.Width = 200;
popup.Height = 200;
//popup.Child = Set the Popup's content child...
Rect placementRectangle = hyperlinkLayoutBox.ControlBoundingRectangle.ToRect();
.radRichTextBox.LayoutMode == DocumentLayoutMode.Paged)
y = placementRectangle.Y -
.radRichTextBox.VerticalOffset + placementRectangle.Height;
x = placementRectangle.X + (
.radRichTextBox.Document.DocumentLayoutBox.BoundingRectangle.Width) / 2;
Rect(x, y, placementRectangle.Width, placementRectangle.Height);
popup.PlacementRectangle = placementRectangle;
Please note, it might be necessary to change the "x" and "y" calculations depending on your scenario.
I hope this helps.
However, if you have other questions or any further problems with the implementation of the above-mentioned rectangle's calculations, please try to isolate the issue in a sample project and send it to us. In this way, it will be much easier for us to help you to achieve the desired goal.
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal
and vote to affect the priority of the items