У меня есть ItemsControl
, который выглядит примерно так:
<ItemsControl ItemsSource="{Binding}" PreviewMouseWheel="ItemsControl_PreviewMouseWheel" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="0,4"><!--Margin to keep the items from being smashed too closely together-->
...
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
ItemsControl
будет одним из нескольких элементов в прокручиваемой области, но если я наведу колесико мыши на ItemsControl
, ничего не произойдет. Итак, я хочу перенаправить события колесика мыши выше по дереву:
private void ItemsControl_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
e.Handled = true;
RaiseEvent(new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta)
{
RoutedEvent = UIElement.MouseWheelEvent
});
}
Это в основном работает. Но когда мышь прокручивает область Margin
(заданную Margin="0,4"
) между двумя элементами в элементе управления, ничего не происходит. Я попытался поместить сетку в декоратор, например Border
, но это, похоже, не помогает. Как я могу захватить эти события колесика мыши и перенаправить их вверх по дереву?