2010-09-13 5 views
1

J'ai besoin d'afficher la bordure du bouton de la barre d'outils sur la souris en survol et de la cacher autrement. J'ai essayé de faire ce qui suit:C# WPF - Comment modifier le style ToolBar.ButtonStyleKey

<Style x:Key="{x:Static ToolBar.ButtonStyleKey}" TargetType="Button" BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"> 
    <Setter Property="Foreground" Value="Blue"/> 
    <Setter Property="Control.Background" Value="Transparent" /> 
    <Setter Property="Control.BorderBrush" Value="Transparent" /> 
    <Setter Property="Control.BorderThickness" Value="1" /> 
    <Setter Property="HorizontalAlignment" Value="Center"/> 
    <Setter Property="VerticalAlignment" Value="Center"/> 

    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="true"> 
      <Setter Property="Control.BorderBrush" Value="Red"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

mais il ne fonctionne pas comme prévu. Ce que je m'attends à ce que se passe sur la souris sur la frontière deviendra la couleur rouge sinon sera transparent. Le résultat réel était qu'il agit comme dans le comportement par défaut avec les couleurs par défaut.
Sûrement je fais quelque chose de mal.
Est-ce que quelqu'un sait ce que c'est?

Répondre

4

Essayez le suivant pour remplacer le style de bouton identifié par ToolBar.ButtonStyleKey lorsqu'il est utilisé dans une barre d'outils.

<ToolBar.Resources> 
    <Style x:Key="{x:Static ToolBar.ButtonStyleKey}" TargetType="{x:Type Button}"> 
     <Setter Property="Foreground" 
      Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
     <Setter Property="Padding" Value="2"/> 
     <Setter Property="BorderThickness" Value="4"/> 
     <Setter Property="Background" Value="Transparent"/> 
     <Setter Property="BorderBrush" Value="Transparent"/> 
     <Setter Property="HorizontalAlignment" Value="Center"/> 
     <Setter Property="VerticalAlignment" Value="Center"/> 
     <Setter Property="HorizontalContentAlignment" Value="Center"/> 
     <Setter Property="VerticalContentAlignment" Value="Center"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <Border x:Name="Bd" 
        SnapsToDevicePixels="true" 
        Background="{TemplateBinding Background}" 
        BorderBrush="{TemplateBinding BorderBrush}" 
        BorderThickness="{TemplateBinding BorderThickness}" 
        Padding="{TemplateBinding Padding}"> 
         <ContentPresenter 
         HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
         VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
         SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
        </Border> 
        <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="true"> 
         <Setter Property="BorderBrush" TargetName="Bd" Value="Orange"/> 
        </Trigger> 
        </ControlTemplate.Triggers> 
      </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</ToolBar.Resources>