2009-08-03 16 views
20

Estoy tratando de desactivar el efecto MouseOver en los botones, o al menos cambiar el color de la misma, en WPF.¿Cómo se desactivan los efectos de MouseOver en un botón en WPF?

estoy usando el siguiente estilo:

<Style x:Key="Borderless" TargetType="{x:Type Button}"> 
      <Setter Property="OverridesDefaultStyle" Value="True"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type Button}"> 
         <Button Background="{TemplateBinding Control.Background}" 
           Focusable="False"> 
          <ContentPresenter 
        Margin="{TemplateBinding Control.Padding}" 
        HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" 
        VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}" 
        SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" 
        ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" 
        RecognizesAccessKey="True" 
        Content="{TemplateBinding ContentControl.Content}" /> 
          </Button> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

en Window.Resources, que pensé que anular todos los comportamientos predeterminados. Pero no es así

¿Alguna sugerencia?

Respuesta

37

Mira lo que reduce su plantilla de control hacia abajo para:

<ControlTemplate TargetType="{x:Type Button}"> 
    <Button> 
     <ContentPresenter/> 
    </Button> 
</ControlTemplate> 

¿Estás diciendo, "quiero reemplazar el aspecto de mi botón con ... un botón." El uso del ControlTemplate es para reemplazar el árbol visual de un control. Entonces estás reemplazando el árbol visual del botón existente con otro botón. Si desea iniciar un botón desde cero, intente utilizar el botón SimpleStyles:

<Style TargetType="{x:Type Button}"> 
    <Setter Property="SnapsToDevicePixels" Value="true"/> 
    <Setter Property="OverridesDefaultStyle" Value="true"/> 
    <Setter Property="MinHeight" Value="23"/> 
    <Setter Property="MinWidth" Value="75"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate TargetType="{x:Type Button}"> 
      <Border Name="Border" CornerRadius="2" BorderThickness="1" 
        Background="#C0C0C0" 
        BorderBrush="#404040"> 
       <ContentPresenter Margin="2" 
           HorizontalAlignment="Center" 
           VerticalAlignment="Center" 
           RecognizesAccessKey="True"/> 
      </Border> 
      <ControlTemplate.Triggers> 
       <Trigger Property="IsKeyboardFocused" Value="true"> 
        <Setter TargetName="Border" 
          Property="BorderBrush" Value="#202020" /> 
       </Trigger> 
       <Trigger Property="IsDefaulted" Value="true"> 
        <Setter TargetName="Border" 
          Property="BorderBrush" Value="#202020" /> 
       </Trigger> 
       <Trigger Property="IsMouseOver" Value="true"> 
        <Setter TargetName="Border" 
          Property="Background" Value="#808080" /> 
       </Trigger> 
       <Trigger Property="IsPressed" Value="true"> 
        <Setter TargetName="Border" 
          Property="Background" Value="#E0E0E0" /> 
        <Setter TargetName="Border" 
          Property="BorderBrush" Value="#606060" /> 
       </Trigger> 
       <Trigger Property="IsEnabled" Value="false"> 
        <Setter TargetName="Border" 
          Property="Background" Value="#EEEEEE" /> 
        <Setter TargetName="Border" 
          Property="BorderBrush" Value="#AAAAAA" /> 
        <Setter Property="Foreground" Value="#888888"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Tenga en cuenta que esta plantilla crea un botón de la manera más simple posible: una frontera que contiene el contenido botón. No usa otro botón incrustado dentro de la plantilla.

+1

Eso es genial, Charlie. Ahora lo entiendo. Aclamaciones. – jarmond

+0

Gracias por este Charlie, ayudó inmensamente. – billb

+1

Esto me salvó la vida, gracias. Tengo que revisar un diseño creado por el usuario con botones transparentes, pero el efecto de desplazamiento arruinó mis planes. – mico

Cuestiones relacionadas