ScrollViewerとListBoxが入れ子になった場合のスクロール

ScrollViewrとListBoxが入れ子になっているとき、ListBoxはスクロールバーが表示されていなくても、マウスカーソルの位置によっては親のScrollViewerが動かないことがあります。

これはBubble Eventが子エレメントでハンドルされてしまっていることが原因なので、スクロールイベントScrollChangedのメソッド内でe.Handledをfalseにしてやればいいと思います。(未確認)

これをXAMLで行いたい場合には(DataTemplate内でListBox等を定義している場合はこちらの方法しか使えない)、ScrollViewer.CanContentControl="False"を子エレメントに指定すれば良いようです。

<ScrollViewer>
    <Grid>
        <ListBox ScrollViewer.CanContentScroll="False" ItemsSource="{Binding}">
        </ListBox>
    </Grid>
</ScrollViewer>