【发布时间】:2020-08-06 13:14:33
【问题描述】:
我有一个ScrollViewer,里面有一个ItemPresenter。
ItemsPresenter 包含一些下拉菜单,当我打开其中一个时,我想禁用父 ScrollViewer 的滚动,并且只有在 Dropbox 关闭时才重新启用它。
说“禁用”是指完全阻止滚动(即使使用鼠标滚轮)。
我尝试将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>
【问题讨论】:
-
您的转换器可能会返回 Hidden 以获得可见性,但这只会隐藏 ScrollBar,但仍然可以滚动。它应该返回 Disabled 来阻止滚动。
-
不,它返回“已禁用”。奇怪的是,即使我在那里硬编码“禁用”(参见第一个示例),它仍然无法工作。