Silverlight 3 - MouseWheel
Una de las grandes novedades y además de las más solicitadas que trajo Silverlight 3 RTW, es el soporte a la “ruedita” del mouse o mejor conocido como MouseWheel.
Voy a mostrar un sencillo ejemplo de cómo implementar esta nueva funcionalidad.
Vamos a empezar teniendo una imagen en nuestra aplicación a la cual le vamos a cambiar la escala cada vez que hagamos scroll con el mouse.
Primero agregamos la imágen al XAML, y ya vamos a tener la propiedad que vamos a modificar que es ScaleTransform.
<UserControl x:Class="MouseWheel.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" Width="600" d:DesignHeight="600">
<Grid x:Name="LayoutRoot" Background="Gray">
<Border CornerRadius="5"
BorderBrush="DarkGray"
BorderThickness="2"
Background="White"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<Grid Margin="10" Width="100" Height="100">
<Image Source="/images/silverlight.jpg"></Image>
</Grid>
<Border.RenderTransform>
<TransformGroup>
<ScaleTransform x:Name="ZoomScaleTransform" />
</TransformGroup>
</Border.RenderTransform>
</Border>
</Grid>
</UserControl>
Ahora vamos a lo interesante, que es agregar el handler del evento, el cual es MouseWheelEventHandler.
LayoutRoot.MouseWheel +=
new MouseWheelEventHandler(LayoutRoot_MouseWheel);
Lo que hicimos fue agregar un evento que se llama cada vez que hacemos scroll con el mouse, mientras el foco lo tenga la aplicación.
Ahora vamos a ver el evento que tiene la funcionalidad.
public void LayoutRoot_MouseWheel(object sender, MouseWheelEventArgs e)
{
if (e.Delta > 0)
{
ZoomScaleTransform.ScaleX = ZoomScaleTransform.ScaleX + 0.1;
ZoomScaleTransform.ScaleY = ZoomScaleTransform.ScaleY + 0.1;
}
else
{
ZoomScaleTransform.ScaleX = ZoomScaleTransform.ScaleX - 0.1;
ZoomScaleTransform.ScaleY = ZoomScaleTransform.ScaleY - 0.1;
}
}
Luego con ese valor podemos hacer lo que queramos, en este caso modificamos la escala según si agrando o achico la imágen.
Pueden descargar el proyecto aquí.