矩形 IsFocused 不起作用

Rectangle IsFocused doesn't work

我有一个 slider,我希望它的拇指根据其状态改变样式:鼠标悬停或单击。 我确实尝试过更改拇指的样式,但由于没有明显的原因,它什么也没做。 所以这个矩形 IsMouseOver 工作得很好,但正如我所说,IsFocused 什么都不做。

我的XAML:

<Style x:Key="SliderRectStyle" TargetType="{x:Type Rectangle}">
<Setter Property="Fill" Value="#FF5B5B5B"/>
<Setter Property="Stroke" Value="#FF5B5B5B"/>
<Setter Property="Opacity" Value="1"/>
<Setter Property="mouseHelper:MouseDownHelper.IsEnabled" Value="True"/>
    <Style.Triggers>
        <Trigger Property="IsFocused" Value="True">
            <Setter Property="Fill" Value="#FFF0A300"/>
            <Setter Property="Stroke" Value="#FFF0A300"/>
        </Trigger>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Fill" Value="#FFD1A139"/>
            <Setter Property="Stroke" Value="#FFD1A139"/>
        </Trigger>

   </Style.Triggers>

 </Style>

你需要将RectangleIsFocusable 属性设置为true并通过调用它的Focus()方法来真正聚焦它:

<Rectangle x:Name="rect" Style="{StaticResource SliderRectStyle}" Width="100" Height="100" Focusable="True" 
                   PreviewMouseLeftButtonDown="rect_PreviewMouseLeftButtonDown" />

private void rect_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    rect.Focus();
}