Elementy potomne przeglądarki scrollviewer uniemożliwiające przewijanie kółkiem myszy?

Mam problem z przewijaniem kółka myszy, aby działało w następującym XAML, co uprościłem dla jasności:

<ScrollViewer
HorizontalScrollBarVisibility="Visible"
VerticalScrollBarVisibility="Visible"
CanContentScroll="False"
>
    <Grid
    MouseDown="Editor_MouseDown"
    MouseUp="Editor_MouseUp"
    MouseMove="Editor_MouseMove"
    Focusable="False"
    >
        <Grid.Resources>
            <DataTemplate
            DataType="{x:Type local:DataFieldModel}"
            >
                <Grid
                Margin="0,2,2,2"
                >
                    <TextBox
                    Cursor="IBeam"
                    MouseDown="TextBox_MouseDown"
                    MouseUp="TextBox_MouseUp"
                    MouseMove="TextBox_MouseMove"
                    />
                </Grid>
            </DataTemplate>
        </Grid.Resources>
        <ListBox
        x:Name="DataFieldListBox"
        ItemsSource="{Binding GetDataFields}"
        SelectionMode="Extended"
        Background="Transparent"
        Focusable="False"
        >
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <Canvas />
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemContainerStyle>
                <Style
                TargetType="ListBoxItem"
                >
                    <Setter
                    Property="Canvas.Left"
                    Value="{Binding dfX}"
                    />
                    <Setter
                    Property="Canvas.Top"
                    Value="{Binding dfY}"
                    />
                </Style>
            </ListBox.ItemContainerStyle>
        </ListBox>
    </Grid>
</ScrollViewer>

Wizualnie wynikiem jest obszar o znanym rozmiarze, gdzieDataFields czytane z kolekcji mogą być reprezentowane przezTextBoxes, które mają dowolną pozycję, rozmiar itp. W przypadkach, gdyListBoxstylizowany „obszar” jest zbyt duży, aby można było wyświetlać naraz, możliwe jest przewijanie w poziomie i pionie, ale tylko za pomocą pasków przewijania.

Aby uzyskać lepszą ergonomię i rozsądek, przewijanie kółkiem myszy powinno być możliwe i normalneScrollViewer obsłużyłoby to automatycznie, aleListBox zdaje się przekazywać takie zdarzenia, że ​​rodzicScrollViewer nigdy ich nie widzi. Do tej pory udało mi się tylko ustawić ustawienie przewijania kółIsHitTestVisible=False albo dlaListBox lub rodzicGrid, ale oczywiście żadne z zdarzeń myszy elementu potomnego nie działa później.

Co mogę zrobić, aby zapewnićScrollViewer widzi zdarzenia kółka myszy, zachowując inne dla elementów potomnych?

Edytuj: Właśnie się tego nauczyłemListBox ma wbudowanyScrollViewer który prawdopodobnie kradnie zdarzenia koła od rodzicaScrollViewer a ten określający szablon kontrolny może go wyłączyć. Zaktualizuję to pytanie, jeśli to rozwiąże problem.

questionAnswers(4)

yourAnswerToTheQuestion