[英]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.