说我有以下内容:
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type Border}">
<Style.Triggers>
<Trigger Property="Border.IsMouseOver" Value="true">
<Setter Property="Background" Value="Black" />
<Setter Property="BorderBrush" Value="Red" />
<Setter Property="BorderThickness" Value="2" />
<Setter Property="CornerRadius" Value="7,2,10,2" />
</Trigger>
<Trigger Property="Border.IsMouseOver" Value="false">
<Setter Property="Background" Value="Black" />
<Setter Property="BorderBrush" Value="RoyalBlue" />
<Setter Property="BorderThickness" Value="2" />
<Setter Property="CornerRadius" Value="7,2,10,2" />
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="7,0,7,1" />
<Setter Property="FontSize" Value="12" />
<Setter Property="Foreground" Value="White" />
</Style>
<Style TargetType="{x:Type Run}">
<Setter Property="FontSize" Value="12" />
</Style>
</Grid.Resources>
<FlowDocument >
<Paragraph>
<Span>
<Border>
<TextBlock>Test</TextBlock>
</Border>
</Span>
</Paragraph>
</FlowDocument>
</RichTextBox>
</Grid>
当边框位于 RichTextBox 之外时,样式触发器可以很好地工作,但当它们位于 RichTextBox 中的 InlineUIContainer 内时,样式触发器就不行了。
我可以通过使用 MouseOver 事件和使用 VisualTreeHelper.HitTest() 方法在后面的代码中设置属性来获得所需的行为,但我很确定这是非常低效的,不禁想有更好的方法来解决这个问题吗?
如果有人可以在这里提供一些指导,那将不胜感激。