如何防止在鼠标单击时突出显示 InlineUIContainer?

How to prevent the highlighting of InlineUIContainer on mouse click?

考虑 WPF RichTextBox 中的以下 FlowDocument

<RichTextBox Width="150" FontSize="30">
  <FlowDocument>
    <Paragraph>
      <Run Text="abc"/>
      <InlineUIContainer>
        <Border BorderBrush="Black" BorderThickness="1" CornerRadius="4" Width="30" Height="20"/>
      </InlineUIContainer>
      <Run Text="def"/>
    </Paragraph>
  </FlowDocument>
</RichTextBox>

当我点击 Border 时,它会以蓝色突出显示:

我该如何预防?我希望它能定位插入符号,如下所示:

我已经尝试了以下属性但没有成功:

使用这个 xaml:

 <RichTextBox x:Name="rchText" Width="150" FontSize="30">
      <FlowDocument MouseDown="rch_MouseDown">
         <Paragraph>
              <Run Text="abc"/>
              <InlineUIContainer>
             <Border x:Name="brdText" BorderBrush="Black" BorderThickness="1" CornerRadius="4" Width="30" Height="20"/>
             </InlineUIContainer>
             <Run Text="def"/>
        </Paragraph>
     </FlowDocument>
</RichTextBox>

然后:

private void rch_MouseDown(object sender, MouseButtonEventArgs e)
{
   var mousePoint = Mouse.GetPosition(rchText);
   var borderPos = brdText.TranslatePoint(new Point(0, 0), rchText);
   if(mousePoint.X > borderPos.X && mousePoint.X < (borderPos.X + brdText.ActualWidth) && mousePoint.Y > borderPos.Y && mousePoint.Y < (borderPos.Y + brdText.ActualWidth))
   {
     e.Handled = true;
   }
}

使用RichTextBox.SelectionChanged事件取消选择 InlineUIContainer:

private void Rtb_SelectionChanged(object sender, RoutedEventArgs e)
{
    if (sender is RichTextBox rtb)
    {
        rtb.SelectionChanged -= Rtb_SelectionChanged;
        InlineUIContainer inline = null;
        var curr = rtb.CaretPosition.Parent;
        if (curr is Run run)
        {
            if (run.NextInline is InlineUIContainer nuic)
            {
                inline = nuic;                        
            }
            else if (run.PreviousInline is InlineUIContainer puic)
            {
                inline = puic;                        
            }

            if (inline != null && rtb.Selection.Contains(inline.ContentStart) 
                && rtb.Selection.Contains(inline.ContentEnd))
            {
                var current = rtb.CaretPosition;
                rtb.Selection.Select(current, current);
            }
        }
        rtb.SelectionChanged += Rtb_SelectionChanged;
    }        
}