¿Elementos secundarios del scrollviewer que impiden el desplazamiento con la rueda del ratón?

Estoy teniendo problemas para que la rueda del mouse funcione en el siguiente XAML, que he simplificado para mayor claridad:

<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>

Visualmente, el resultado es un área de algún tamaño conocido dondeDataFieldLas lecturas de una colección se pueden representar conTextBoxEsos que tienen posición arbitraria, tamaño, etcétera. En los casos en que elListBoxEl "área" de estilo es demasiado grande para mostrar todo a la vez, es posible el desplazamiento horizontal y vertical, pero solo con las barras de desplazamiento.

Para una mejor ergonomía y cordura, el desplazamiento de la rueda del mouse debería ser posible, y normalmenteScrollViewer lo manejaría automáticamente, pero elListBox Parece estar entregando esos eventos de tal manera que el padreScrollViewer nunca los ve Hasta ahora solo he podido hacer funcionar el desplazamiento de la ruedaIsHitTestVisible=False ya sea para elListBox o el padreGrid, pero, por supuesto, ninguno de los eventos del mouse del elemento hijo funciona después de eso.

¿Qué puedo hacer para asegurar laScrollViewer ¿Ve los eventos de la rueda del mouse mientras se conservan los demás para elementos secundarios?

Edit: me acabo de enterar de queListBox tiene un incorporadoScrollViewer que es probablemente robar eventos de la rueda del padreScrollViewer y que al especificar una plantilla de control se puede deshabilitar. Voy a actualizar esta pregunta si eso resuelve el problema.

Respuestas a la pregunta(4)

Su respuesta a la pregunta