Я просто связываю команду с помощью Interaction.Triggers.
Вам нужно будет сослаться на пространство имен интерактивности выражения в XAML.
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseWheel">
<cmd:InvokeCommandAction Command="{Binding MouseWheelCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
Затем в связанной команде.
private void MouseWheelCommandExecute(MouseWheelEventArgs e)
{
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{
if (e.Delta > 0)
{
if (Properties.Settings.Default.ZoomLevel < 4)
Properties.Settings.Default.ZoomLevel += .1;
}
else if (e.Delta < 0)
{
if (Properties.Settings.Default.ZoomLevel > 1)
Properties.Settings.Default.ZoomLevel -= .1;
}
}
}
Если Delta поднимается, мышь прокручивает вверх, а при падении прокручивает вниз.Я использую это в приложении, где прокрутка происходит в прокручиваемом контенте, но когда какая-либо из клавиш Ctrl не работает, приложение фактически увеличивает масштаб.