C# 允许外部滚动查看器在内部水平滚动滚动查看器中进行垂直滚动
当您在ScrollViewer中有ScrollViewer时,使用滚轮的滚动仅限于内部滚轮。当他们有相同的“方向”时,这是有道理的。但是当外部只允许垂直滚动,而内部只允许水平滚动时,我希望使用内部的鼠标滚轮在外部ScrollViewer中垂直滚动。没有。有没有办法让它做到这一点 在以下代码中,尝试在红色字母区域内使用滚轮:C# 允许外部滚动查看器在内部水平滚动滚动查看器中进行垂直滚动,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,当您在ScrollViewer中有ScrollViewer时,使用滚轮的滚动仅限于内部滚轮。当他们有相同的“方向”时,这是有道理的。但是当外部只允许垂直滚动,而内部只允许水平滚动时,我希望使用内部的鼠标滚轮在外部ScrollViewer中垂直滚动。没有。有没有办法让它做到这一点 在以下代码中,尝试在红色字母区域内使用滚轮: <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disa
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
<StackPanel>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<TextBlock>aaaaaaaaaaaaaaaaaa</TextBlock>
<ScrollViewer VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto">
<StackPanel >
<TextBlock Foreground="Red">aaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccc dddddddddddddddddddddd eeeeeeeeeeeeeeeeeeeee fffffffffffffffff ggggggggggggggggggggggg</TextBlock>
<TextBlock Foreground="Red">aaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccc dddddddddddddddddddddd eeeeeeeeeeeeeeeeeeeee fffffffffffffffff ggggggggggggggggggggggg</TextBlock>
<TextBlock Foreground="Red">aaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccc dddddddddddddddddddddd eeeeeeeeeeeeeeeeeeeee fffffffffffffffff ggggggggggggggggggggggg</TextBlock>
<TextBlock Foreground="Red">aaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbb cccccccccccccccccccccc dddddddddddddddddddddd eeeeeeeeeeeeeeeeeeeee fffffffffffffffff ggggggggggggggggggggggg</TextBlock>
</StackPanel>
</ScrollViewer>
</StackPanel>
</ScrollViewer>
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffffffff ggggggggggggggggggggggggggg
aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffffffff ggggggggggggggggggggggggggg
aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffffffff ggggggggggggggggggggggggggg
aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffffffff ggggggggggggggggggggggggggg
如果可以使用代码隐藏,则可以为“child”ScollViewer
的PreviewMouseWheel
事件创建事件处理程序,并且在事件处理程序中,可以将MouseWheelEventArgs
信息传递给“父级”ScrollViewer
来引发它自己的MouseWheel
事件
首先,XAML将有几个小改动:
为“父项”ScrollViewer
指定一个名称,以便可以从代码隐藏中引用它:
<ScrollViewer x:Name="parentScrollViewer"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled">
最后,在事件处理程序中实现代码以引发“parent”mouseweel
事件:
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
var mouseWheelEventArgs = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
mouseWheelEventArgs.RoutedEvent = ScrollViewer.MouseWheelEvent;
mouseWheelEventArgs.Source = sender;
this.parentScrollViewer.RaiseEvent(mouseWheelEventArgs);
}
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
var mouseWheelEventArgs = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
mouseWheelEventArgs.RoutedEvent = ScrollViewer.MouseWheelEvent;
mouseWheelEventArgs.Source = sender;
this.parentScrollViewer.RaiseEvent(mouseWheelEventArgs);
}