C# 如何将弹出窗口定位在单词-wpf的开头

C# 如何将弹出窗口定位在单词-wpf的开头,c#,wpf,C#,Wpf,使用以下代码,我能够在插入符号位置显示弹出窗口。我如何才能在单词开头打开弹出窗口。我正在使用richtextbox Rect positionRect = richtextbox.CaretPosition.GetCharacterRect(LogicalDirection.Backward); Point point = richtextbox.PointToScreen(positionRect.BottomRight); popup.HorizontalOffset = point

使用以下代码,我能够在插入符号位置显示弹出窗口。我如何才能在单词开头打开弹出窗口。我正在使用richtextbox

 Rect positionRect =  richtextbox.CaretPosition.GetCharacterRect(LogicalDirection.Backward);
 Point point = richtextbox.PointToScreen(positionRect.BottomRight);
 popup.HorizontalOffset = point.X;
 popup.VerticalOffset = point.Y;
 popup.IsOpen = true;

我在下面用
测试了代码,RTB中的文本是“stackoverflow总是好的”。将光标放在某个点并单击按钮,单词开头会出现一个弹出窗口。现在,我使用空格作为单词分隔符,如果您想使用(,)或其他任何东西,可以相应地修改它

private void Button_Click(object sender, RoutedEventArgs e)
        {
            TextPointer cur = Rtb1.CaretPosition;
            char[] textbuffer = new char[1];
            do
            {
                int offset = Rtb1.Document.ContentStart.GetOffsetToPosition(cur);
                cur.GetTextInRun(LogicalDirection.Backward, textbuffer, 0, 1);
                System.Diagnostics.Debug.WriteLine(textbuffer[0].ToString());
                cur = cur.GetNextInsertionPosition(LogicalDirection.Backward);
            } while (textbuffer[0] != ' ' && cur != null);

            cur = cur.GetNextInsertionPosition(LogicalDirection.Forward);
            if (cur == null)
                cur = Rtb1.Document.ContentStart;
            Rtb1.CaretPosition = cur;
            Rtb1.Focus();

            Rect rect = cur.GetCharacterRect(LogicalDirection.Backward);
            Point point = Rtb1.PointToScreen(rect.BottomRight);
            Popup1.HorizontalOffset = point.X;
            Popup1.VerticalOffset = point.Y;
            Popup1.IsOpen = true;
        }

请告诉我这是否解决了您的问题。

转到单词的开头。@AnjumSKhan我该怎么做,我不能移动插入符号的位置