Saltar al contenido

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

Después de de esta larga recopilación de datos resolvimos este atasco que tienen muchos de nuestros usuarios. Te ofrecemos la respuesta y deseamos resultarte de gran ayuda.

Solución:

Para eliminar el predeterminado MouseOver comportamiento en el Button necesitará modificar el ControlTemplate. Cambiando tu Style definición a lo siguiente debería hacer el truco:


EDITAR: Es unos años tarde, pero en realidad puede colocar el pincel de borde dentro del borde que está allí. No sé si se señaló eso, pero no parece que lo fuera …

Todas las respuestas hasta ahora implican reemplazar completamente el comportamiento del botón predeterminado con algo más. Sin embargo, en mi humilde opinión, es útil e importante comprender que es posible cambiar solo la parte que te importa, editando la plantilla predeterminada existente para un elemento XAML.

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

Con un poco de esfuerzo, podría anular este comportamiento con su propio establecedor, pero debido a que el elemento que necesita afectar está en la plantilla y no se puede acceder directamente en su propio XAML, ese enfoque sería difícil y, en mi humilde opinión, demasiado complejo.

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

Sin embargo, si literalmente solo desea deshabilitar el efecto de desplazamiento por completo (en lugar de solo ocultarlo), puede usar Visual Studio XAML Designer:

  1. Mientras edita su XAML, seleccione el “Diseño” pestaña.
  2. En el “Diseño” pestaña, busque el botón para el que desea desactivar el efecto.
  3. Haga clic con el botón derecho en ese botón y elija “Editar plantilla / Editar una copia …”. En el mensaje que aparece, seleccione dónde desea que se coloque el nuevo recurso de plantilla. Esto parecerá no hacer nada, pero de hecho el Diseñador habrá agregado nuevos recursos donde usted lo indicó y cambiado su elemento de botón para hacer referencia al estilo que usa esos recursos como la plantilla de botón.
  4. Ahora puedes editar ese estilo. Lo más fácil es eliminar o comentar (p. Ej. control+mi, C) los ... elemento. Por supuesto, puede realizar cualquier cambio en la plantilla que desee en ese momento.

Cuando haya terminado, el estilo del botón se verá así:


  
    
      
        
      
    
  











  
  
  
  
  
  
  
  
  
    
      
        
          
        
        
          
            
          
          
          
            
            
          
          
            
            
            
          
        
      
    
  

(Nota: puede omitir el p: Calificaciones del espacio de nombres XML en el código real … Las proporciono aquí solo porque el formateador de código XML de desbordamiento de pila se confunde con

Botón


Notas

  • El botón muestra una pequeña cruz azul, muy parecida a la que se usa para cerrar una ventana.
  • Al establecer el fondo de la cuadrícula en “Transparente”, agrega un hittest, lo que significa que si el mouse está en cualquier lugar sobre el botón, entonces 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).

valoraciones y comentarios

Finalizando este artículo puedes encontrar los informes de otros usuarios, tú incluso eres capaz dejar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *