2017-03-16 50 views
0

我有一個slider,我希望它的大拇指根據其狀態更改樣式:鼠標懸停或點擊。 我的確嘗試改變拇指的風格,但沒有明顯的理由,它沒有做任何事。 所以這個矩形,IsMouseOver工作得很好,但正如我所說的,IsFocused什麼都不做。矩形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> 

回答

1

您需要通過調用其Focus()方法注重它的RectangleIsFocusable屬性設置爲true,實際上重點是:

<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(); 
} 
+0

謝謝。剩下的唯一問題就是這個矩形是在一個拇指樣式中(這是由滑塊樣式使用的),並且沒有明顯的原因,我的XAML.cs沒有看到我給我的矩形的名字。如何解決這個問題? – agiro

+0

您需要在可視化樹中獲得對矩形的引用,然後再看看另一個故事。如果您有另一個問題,請提出一個新問題,並確保包含所有相關代碼片段,以便任何人能夠從頭開始重現您的問題:http://stackoverflow.com/help/mcve – mm8

+1

確實有一個,並很抱歉混亂。我計劃首先谷歌視覺樹的東西。 – agiro