[英]Disable the scroll of the ScrollViewer for a while
我有一个ScrollViewer
,里面有一个ItemPresenter
。 ItemsPresenter
包含一些下拉菜单,当我打开其中一个下拉菜单时,我想禁用父级ScrollViewer
的滚动,并且只有在下拉框关闭时才重新启用它。
通过说“禁用”,我的意思是完全阻止滚动(即使使用鼠标滚轮)。
我尝试将VerticalScrollBarVisibility
设置为Disabled
,如下所示:
<ScrollViewer HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Disabled">
<ItemsPresenter />
</ScrollViewer>
但这也不起作用。
它只是隐藏了滚动条,但鼠标滚轮仍然有效。
那么,有没有办法完全禁用ScrollViewer
的滚动?
这是我拥有的完整代码:
<ListView.Template>
<ControlTemplate>
<ScrollViewer HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="{Binding IsScrollEnabled, Converter={StaticResource BoolToVisibilityConverter}}">
<ItemsPresenter />
</ScrollViewer>
</ControlTemplate>
</ListView.Template>
您可以通过处理ScrollViewer
的PreviewMouseWheel
事件来禁用滚动。
<ScrollViewer HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="{Binding IsScrollEnabled, Converter={StaticResource BoolToVisibilityConverter}}"
PreviewMouseWheel="UIElement_OnPreviewMouseWheel">
<ItemsPresenter />
</ScrollViewer>
private void UIElement_OnPreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
e.Handled = true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.