У меня есть. net core 3.1 WPF программа. У меня есть простой UserControl с прокруткой и сеткой внутри. Когда я использую колесо мыши для прокрутки, оно работает, только если указатель не находится над сеткой.
<UserControl x:Class="Gestech_Ecotheque.Views.View1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True">
<ScrollViewer x:Name="scrollviewer" DockPanel.Dock="Top" VerticalScrollBarVisibility="Auto" >
<Grid PreviewMouseWheel="Grid_PreviewMouseWheel" >
<Grid.RowDefinitions>
<!--Titre de la View-->
<RowDefinition Height="450"/>
<RowDefinition Height="450"/>
<RowDefinition Height="450"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="View 1"></TextBlock>
<TextBlock Grid.Row="2" Text="Line 3"></TextBlock>
</Grid>
</ScrollViewer>
</UserControl>
Пользовательский контроль находится в tabcontrol. Я думаю, что сетка пересекает колесо мыши и не распространяется на scrollviewer. Я пробовал этот код для распространения, но он не работает.
private void Grid_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
{
if (!e.Handled)
{
e.Handled = true;
var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
eventArg.RoutedEvent = UIElement.MouseWheelEvent;
eventArg.Source = sender;
var parent = ((Grid)sender).Parent as UIElement;
parent.RaiseEvent(eventArg);
}
}
Мой вопрос заключается в том, как активировать колесо мыши для scrollviewer, когда мышь находится над сеткой?
Спасибо