あなたが参照した答えはまさにあなたの問題の原因です.ScrollViewer内のListBox(ScrollViewerなどで構成されています)はMouseWheelイベントをキャッチして処理し、バブリングを防ぎます。したがって、ScrollViewerはイベントを認識しません発生したことがあります。
次の非常に単純な ControlTemplate を ListBox に使用してデモを行います (ScrollViewer が含まれていないため、MouseWheel イベントがキャッチされないことに注意してください)。
<UserControl.Resources>
<ControlTemplate x:Key="NoScroll">
<ItemsPresenter></ItemsPresenter>
</ControlTemplate>
</UserControl.Resources>
<ScrollViewer>
<SomeContainerControl>
<.... what ever other controls are inside your ScrollViewer>
<ListBox Template="{StaticResource NoScroll}"></ListBox>
<SomeContainerControl>
</ScrollViewer>
ただし、ScrollViewer に入ったときにマウスをキャプチャするオプションがあるため、マウスが離されるまですべてのマウス イベントを受け取り続けます。応答が必要です...次の MouseEnter MouseLeave イベント ハンドラで十分です。
private void ScrollViewerMouseEnter(object sender, MouseEventArgs e)
{
((ScrollViewer)sender).CaptureMouse();
}
private void ScrollViewerMouseLeave(object sender, MouseEventArgs e)
{
((ScrollViewer)sender).ReleaseMouseCapture();
}
ただし、私が提供した回避策はどちらも実際には好まれていないため、実際に何をしようとしているのかを再考することをお勧めします. 質問で何を達成しようとしているのかを説明すれば、さらにいくつかの提案が得られると確信しています...