¿Cómo se cambia el fondo de un Button MouseOver en WPF?

Tengo un botón en mi página con este XAML:

  

Pero cuando coloco el mouse sobre mi botón, el fondo del botón cambia al fondo gris predeterminado de Windows.
¿Cuál es el problema?

Esta es la imagen del botón antes y después del mouseover:
Antes de:
antes de
Después:
Después

Para eliminar el comportamiento predeterminado de MouseOver en el Button , deberá modificar ControlTemplate . Cambiar la definición de su Style a lo siguiente debería ser el truco:

   

EDITAR: Faltan algunos años, pero en realidad puedes colocar el pincel de borde dentro del borde que está ahí. Idk si eso fue señalado, pero no parece que fuera …

Esto funcionó bien para mí.

Estilo de botón

            

Botón

   

Notas

  • El botón muestra una pequeña cruz azul, muy similar a la utilizada para cerrar una ventana.
  • Al establecer el fondo de la cuadrícula en “Transparente”, agrega una prueba de aciertos, lo que significa que si el mouse está sobre el botón, funcionará. Omita esta etiqueta, y el botón solo se iluminará si el mouse está sobre una de las líneas vectoriales en el ícono (esto no es muy útil).

Solo quiero compartir mi estilo de botón de mi ResourceDictionary que he estado usando. Puede cambiar libremente el fondo onHover en los activadores de estilo. ” ColorAnimation To = * su GS deseado (es decir, # FFCEF7A0)”. El botón BG también volverá automáticamente a su BG original después del estado mouseOver. Incluso puede establecer qué tan rápido la transición.

Diccionario de recursos

   

todo lo que tienes que hacer es llamar al estilo.

Ejemplo de implementación

  

Una respuesta ligeramente más difícil que utiliza ControlTemplate y tiene un efecto de animación (adaptado de https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/customizing-the-appearance-of-an-existing- control )

En su diccionario de recursos, defina una plantilla de control para su botón como esta:

                             

en su XAML puede usar la plantilla de arriba para su botón de la siguiente manera:

Defina su botón

  

Espero eso ayude

Todas las respuestas hasta ahora implican reemplazar por completo el comportamiento del botón predeterminado con otra cosa. Sin embargo, en mi humilde opinión, es útil e importante entender que es posible cambiar solo la parte que le importa , editando la plantilla predeterminada existente para un elemento XAML.

En el caso de tratar con el efecto de desplazamiento sobre un botón WPF, el cambio en la apariencia en un elemento Button WPF es causado por un Trigger en el estilo predeterminado para el Button , que se basa en la propiedad IsMouseOver y establece las propiedades Background y BorderBrush del elemento Border nivel superior en la plantilla de control. El fondo del elemento Button se encuentra debajo del fondo del elemento Border , por lo que cambiar la propiedad Button.Background no evita que se vea el efecto de Button.Background .

Con un poco de esfuerzo, puede anular este comportamiento con su propio setter, pero dado que el elemento que necesita afectar está en la plantilla y no es directamente accesible en su propio XAML, ese enfoque sería difícil y en mi humilde lugar demasiado complejo.

Otra opción sería utilizar el gráfico como Content para el Button lugar de como Background . Si necesita contenido adicional sobre el gráfico, puede combinarlos con una Grid como el objeto de nivel superior en el contenido.

Sin embargo, si, literalmente, solo desea inhabilitar por completo el efecto de desplazamiento (en lugar de simplemente ocultarlo), puede usar el Diseñador de Visual Studio XAML:

  1. Mientras edita su XAML, seleccione la pestaña “Diseño” .
  2. En la pestaña “Diseño” , busca el botón para el que deseas inhabilitar el efecto.
  3. Haga clic con el botón derecho en ese botón y elija “Editar plantilla / Editar una copia …” . Seleccione en el mensaje que llegue a donde desea ubicar el nuevo recurso de plantilla. Esto parecerá no hacer nada, pero de hecho el Diseñador habrá agregado nuevos recursos donde lo indicó, y cambió el elemento de su botón para hacer referencia al estilo que usa esos recursos como la plantilla del botón.
  4. Ahora, puedes ir a editar ese estilo. Lo más fácil es eliminar o comentar (por ejemplo, Ctrl + E , C ) el elemento ... . Por supuesto, puede hacer cualquier cambio en la plantilla que desee en ese momento.

Cuando termines, el estilo del botón se verá más o menos así:

                                                     

(Nota: puede omitir las calificaciones del espacio de nombres p: XML en el código real … Las proporciono aquí solo porque el formateador de código XML Stack Overflow se confunde con elementos

que no tienen un nombre completo con espacio de nombres XML .)

Si desea aplicar el mismo estilo a otros botones, puede hacer clic con el botón derecho en ellos y seleccionar “Editar plantilla / Aplicar recurso” y seleccionar el estilo que acaba de agregar para el primer botón. Incluso puede hacer que ese estilo sea el estilo predeterminado para todos los botones, usando las técnicas normales para aplicar un estilo predeterminado a los elementos en XAML.