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

考虑 WPF FlowDocument 中的以下 RichTextBox

<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 时,它会以蓝色突出显示:

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

我怎样才能防止这种情况发生?我希望它改为定位插入符号,如下所示:

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

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

  • IsHitTestVisible = false
  • IsEnabled = false
  • IsManipulationEnabled = false
  • Focusable = false
  • IsFocused = false
qq1151873004 回答:如何防止鼠标单击时突出显示 InlineUIContainer?

使用 CurrentUICulture 事件取消选择 RichTextBox.SelectionChanged

InlineUIContainer
,

使用这个 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;
   }
}
本文链接:https://www.f2er.com/1092649.html

大家都在问