2012-04-19 56 views
1

ListView的默認樣式將鼠標懸停在控件上時邊框顏色呈淡藍色。有沒有辦法在不更換整個控制模板的情況下關閉此功能?關閉ListView邊框鼠標懸停動畫

我已經試過

<ListView> 
    <ListView.Style> 
     <Style TargetType="ListView"> 
      <Setter Property="BorderBrush" Value="Green"/> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True">  
        <Setter Property="BorderBrush" Value="Red" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ListView.Style> 
</ListView> 

這導致了綠色邊框,果然簡要紅色,當你的鼠標在衰落淺藍色之前。默認動畫優先。

我是否缺少一些簡單的東西,還是模板重寫的時候?

回答

1

您將不得不覆蓋ControlTemplate,因爲默認的元素使用ListBoxChrome元素來創建您看到的效果。 ListBoxChrome在鼠標結束時會忽略BorderBrush屬性,這由其RenderMouseOver屬性確定。

如果你願意,你仍然可以使用ListBoxChrome,你只需要刪除RenderMouseOver屬性。假設你使用的是GridView你會使用:

xmlns:theme="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" 

... 

<Style x:Key="{x:Static GridView.GridViewStyleKey}" 
     TargetType="{x:Type ListView}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ListView}"> 
       <theme:ListBoxChrome Name="Bd" 
            BorderThickness="{TemplateBinding BorderThickness}" 
            BorderBrush="{TemplateBinding BorderBrush}" 
            Background="{TemplateBinding Background}" 
            RenderFocused="{TemplateBinding IsKeyboardFocusWithin}" 
            SnapsToDevicePixels="true"> 
        <ScrollViewer Style="{DynamicResource {x:Static GridView.GridViewScrollViewerStyleKey}}" 
            Padding="{TemplateBinding Padding}"> 
         <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
        </ScrollViewer> 
       </theme:ListBoxChrome> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsGrouping" 
          Value="true"> 
         <Setter Property="ScrollViewer.CanContentScroll" 
           Value="false"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" 
          Value="false"> 
         <Setter TargetName="Bd" 
           Property="Background" 
           Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

如果你想刪除專注的神情,那麼它可能是更好的只是一個Border元素替換ListBoxChrome

+0

輝煌,謝謝!即使有史努比,我也無法確定動畫的來源。不太熟悉鉻材料的工作原理,所以你的答案是非常有用的。 – GazTheDestroyer 2012-04-20 07:40:41