簡體   English   中英

暫時禁用 ScrollViewer 的滾動

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

PS有很多類似的問題this和this ,但沒有一個是我想要的。

您可以通過處理ScrollViewerPreviewMouseWheel事件來禁用滾動。

<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM