Estoy aprendiendo C# y XAML para crear aplicaciones de Windows. Quería crear un botón que tenga una imagen como fondo. Pero al pasar el cursor sobre el botón, el fondo del botón debería cambiar a otra imagen "resaltada". Intenté agregar las imágenes de fondo en Resources.resx. Tuve que crear un botón personalizado usando estilos xaml para eliminar el efecto resaltado predeterminado de un botón wpf.Botón WPF Mouseover Image
Creé un botón personalizado a partir de algún código que encontré en SO. El código es (en un nuevo diccionario de recursos):
<!-- This style is used for buttons, to remove the WPF default 'animated' mouse over effect -->
<Style x:Key="StartMenuButtons" TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border"
BorderThickness="0"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<!-- UPDATE THE BUTTON BACKGROUND -->
<Setter Property="Background" Value="WHAT GOES HERE" TargetName="border"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
¿Qué debo poner de manera que los cambios de fondo a otra imagen, ya sea en mi resources.resx o en otro lugar? (No estoy seguro de dónde poner la imagen para acceder). Busqué SO, pero las soluciones que encontré no eran exactamente lo que estoy tratando. Si esta es una pregunta duplicada, me disculpo.
Resumen:
¿Cómo puedo cambiar la imagen de fondo de un botón de un ratón sobre el gatillo en XAML? ¿Dónde coloco la imagen para que se pueda acceder a ella en el código de activación?
Actualización Esto es lo que he puesto como acción de disparo, pero la imagen no se actualiza. Me aseguré de establecer la acción de creación de la imagen en el recurso y ponerlo en una carpeta llamada Recursos.
El código es:
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="/Simon;component/Resources/btn_bg_hover.jpg" />
</Setter.Value>
</Setter>
</Trigger>
La estructura de archivos es
Simon
Simon
Resources
all the images
Fonts
bin
obj
Properties
Solución
El siguiente es el código completo para permitir un cambio de imagen al pasar el ratón sobre el botón:
<!-- This style is used for buttons, to remove the WPF default 'animated' mouse over effect -->
<Style x:Key="StartMenuButtons" TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border"
BorderThickness="0"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="border">
<Setter.Value>
<ImageBrush ImageSource="Resources/btn_bg_hover.jpg" />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Para la imagen real, la coloqué en la carpeta Recursos que se encuentra en el directorio raíz. Después de importar las imágenes allí usando la herramienta de recursos en Visual Studio, actualicé la imagen configuración de compilación a Recurso en el panel de Propiedades.
Gracias por la solución dbaseman
Tengo una carpeta de recursos que mis imágenes se almacenan en. He añadido el código como el que tiene, pero cuando me puntero del ratón sobre la imagen no cambia? Me aseguré de que la imagen tenga el "Acción de compilación" configurado en Recurso. ¿Algunas ideas? – Ishikawa
@ Ishikawa primero, ¿está seguro de que está haciendo referencia a la imagen correctamente? Use un elemento básico ' ' en la vista de diseño y asegúrese de que aparezca correctamente. La fuente debe ser simplemente '/ Simon; component/Resources/image.jpg', pero también hay un botón de asistente para que Visual Studio lo configure. –
McGarnagle