Wpf ядро ​​прокрутки колесо мыши над сеткой - PullRequest
0 голосов
/ 20 января 2020

У меня есть. 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, когда мышь находится над сеткой?

Спасибо

...