¿Cómo eliminar el efecto predeterminado del mouse sobre los botones WPF?

Mi problema es que en WPF, cada vez que bash cambiar el color del fondo de un botón usando disparadores o animaciones, el efecto mouseover predeterminado (de ser gris con ese brillo naranja) parece tener prioridad.

Después de búsquedas exhaustivas, no tengo ni idea de cómo eliminar este efecto.

Debe crear su propia plantilla de botón personalizado para tener control total sobre la apariencia en todos los estados. Aquí hay un tutorial .

Esto es similar a la solución referida por Mark Heath, pero no tiene tanto código como para crear un botón muy básico, sin el efecto de mouse incorporado sobre la animación. Conserva un efecto simple sobre el mouse de mostrar el borde del botón en negro. El estilo se puede insertar en la sección Window.Resources o UserControl.Resources por ejemplo (como se muestra).

      

Solo para agregar una solución muy simple, eso fue lo suficientemente bueno para mí, y creo que aborda el problema del OP. Utilicé la solución en esta respuesta, excepto con un valor de Background regular en lugar de una imagen.

  

No volver a crear plantillas más allá de forzar el Background para que siempre sea el fondo Transparent del botón de plantilla: el mouseover ya no afecta el fondo una vez que se hace esto. Obviamente reemplace Transparent con cualquier valor preferido.

Si alguien no quiere anular la plantilla de control predeterminada, esta es la solución.

Puede crear DataTemplate para el botón que puede tener TextBlock y luego puede escribir Property trigger en la propiedad IsMouseOver para deshabilitar el mouse sobre el efecto. La altura de TextBlock y Button debe ser la misma.

    

El Muffin Man tuvo una respuesta muy simple que funcionó para mí.

Para agregar una dirección un poco más específica, al menos para VS 2013:

  • Haga clic derecho en el control
  • Seleccione Editar plantilla => Editar una copia …
  • Seleccioné ‘Aplicación’ para dónde guardar el estilo
    • Desde aquí, puede editar directamente App.xaml y ver las propiedades con nombre intuitivo. Para mis propósitos, simplemente configuro RenderMouseOver = “False”
  • Luego, en MainWindow.xaml o donde sea que esté su GUI, puede pegar el nuevo estilo al final de la etiqueta Button, por ejemplo ... Style="{DynamicResource MouseOverNonDefault}"/>

Una extensión en la respuesta de dodgy_coder que agrega soporte para …

  • Mantener el estilo del botón WPF
  • Agrega soporte para IsSelected y hover, es decir, un botón alternado

       

ejemplos ..

Usando un activador de plantilla: