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:
- Mientras edita su XAML, seleccione el “Diseño” pestaña.
- En el “Diseño” pestaña, busque el botón para el que desea desactivar el efecto.
- 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.
- 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 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 y elegir “Editar plantilla / Aplicar recurso” y seleccione 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, utilizando las técnicas normales para aplicar un estilo predeterminado a los elementos en XAML.
Esto funcionó bien para mí.
Estilo de botón
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.