Обнаружение направления колесика мыши WPF и раскадровки

Я работаю над приложением WPF, которое отображает объект XAML, и я хочу увеличивать и уменьшать масштаб объекта XAML с помощью колесика мыши. Я мог бы создать хороший плавный переход объекта XAML для колеса мыши, но я не могу понять, как различать направление колеса мыши. Я обнаружил, что должен использовать свойства триггера, но не могу найти, как это сделать для колесика мыши.

Это код, который у меня есть до сих пор, и он срабатывает для любого действия колесика мыши (вверх или вниз):

<UserControl.Triggers>
    <EventTrigger RoutedEvent="Mouse.MouseWheel" >
        <BeginStoryboard Storyboard="{StaticResource OnMouseWheel1}"/>
    </EventTrigger>
</UserControl.Triggers>

Спасибо всем вашим помощникам :)


person Jonathan Perry    schedule 16.08.2011    source источник
comment
Вы пытались реализовать это как код позади?   -  person 404Dreamer_ML    schedule 16.08.2011


Ответы (1)


Вы можете использовать WPF XAML Canvas, это может помочь реализовать хорошую раскадровку. Проверьте http://msdn.microsoft.com/en-us/library/cc294753.aspx

Это короткий пример, вам может понадобиться использовать DoobleAnimation.

<Canvas.Resources>
 <Storyboard x:Name="ZoomStoryboard">
       <DoubleAnimation x:Name="ZoomAnimationX"
                        Storyboard.TargetName="Workspace"
                    Storyboard.TargetProperty="Canvas.RenderTransform.ScaleTransform.ScaleX"
                             Duration="0:0:0.2"/>
            <DoubleAnimation x:Name="ZoomAnimationY"
                             Storyboard.TargetName="Workspace"
                             Storyboard.TargetProperty="Canvas.RenderTransform.ScaleTransform.ScaleY"
                             Duration="0:0:0.2"/>
        </Storyboard>
    </Canvas.Resources>

Для меня лучше разработать код позади.

person 404Dreamer_ML    schedule 16.08.2011
comment
Спасибо за оперативный ответ, но я не совсем понял. У меня есть холст, который содержит мой объект XAML, и когда я перемещаю колесико мыши, он запускает раскадровку, указанную в приведенном выше коде, но я хочу запустить другую раскадровку для колесика мыши вверх и другое одно из событий колесика мыши вниз и я не знаю, как отличить одно от другого. - person Jonathan Perry; 16.08.2011
comment
Затем вы должны указать эти действия в коде. Не нужно помещать это в раскадровку. - person 404Dreamer_ML; 16.08.2011
comment
Отлично, звучит как решение для меня. Спасибо! - person Jonathan Perry; 16.08.2011