У меня есть 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
, но это, похоже, не помогает.Как я могу захватить эти события колеса мыши и направить их вверх по дереву?