Представьте, что у вас есть элемент управления richttextbox, называемый richtextbox. Затем, когда вы выбираете какой-то текст и нажимаете кнопку, вы можете создать всплывающий элемент управления с вашим пользовательским элементом управления UserControl. Затем определите положение текста относительно вашего визуального корня и вуаля:)
richtTextBox.Selection.Text =
"Lorem ipsum pro falli dicunt volumus te, ex velit probatus corrumpit per. His ex reque aperiam alienum, liber indoctum per an. Sed ei nibh cibo minim, et eam graeci suavitate. Vim iusto gubergren repudiandae ei.";
private void testButton_Click(object sender, RoutedEventArgs e)
{
var rect = richtTextBox.Selection.Start.GetCharacterRect(System.Windows.Documents.LogicalDirection.Forward);
var richtTextBoxPosition =
richtTextBox.TransformToVisual(Application.Current.RootVisual).Transform(new Point(0, 0));
var popup = new Popup()
{
HorizontalOffset = richtTextBoxPosition.X + rect.X,
VerticalOffset = richtTextBoxPosition.Y + rect.Y + richtTextBox.FontSize,
Height = 150,
Width = 100
};
popup.Child = new ListBox()
{
Background = new SolidColorBrush(Colors.Red),
Height = 150,
Width = 100
}; // use your custom UC here
popup.IsOpen = true;
}
Затем в решении, которое вам нужно, вручную установить выделение для текста с ошибкой.
http://strugglesofacoder.blogspot.com/2011/02/show-popup-under-text-in-rich-textbox.html