首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scrollviewer内部的Listview阻止scrollviewer滚动

scrollviewer内部的Listview阻止scrollviewer滚动
EN

Stack Overflow用户
提问于 2012-01-20 04:21:52
回答 5查看 21.9K关注 0票数 29

我有一个带有几个列表框的滚动查看器。问题是,当用户的鼠标在列表视图上时,如果用户使用鼠标中间的滚轮来滚动滚动查看器。listview将其内部的滚动查看器滚动到底部,然后继续捕获鼠标,从而阻止包含的滚动查看器滚动。

你有什么办法处理这件事吗?

EN

回答 5

Stack Overflow用户

发布于 2012-07-12 20:24:28

这是因为ListView(实际上是ListBox的)内容模板本身用ScrollViewer包装了它的项目。

最简单的方法是通过删除您自己的内部ListViewTemplate来禁用它,该ListView不会创建ScrollViewer

代码语言:javascript
复制
    <ListView>
      <ListView.Template>
        <ControlTemplate>
          <ItemsPresenter></ItemsPresenter>
        </ControlTemplate>
      </ListView.Template>
      ...
    </ListView>

顺便说一下,如果你在ListView中有一个ListView,也会发生同样的事情(这就是我的例子)。

票数 62
EN

Stack Overflow用户

发布于 2020-02-13 22:02:30

IMO,处理这种情况的最好方法是创建自定义控件:

代码语言:javascript
复制
     class MyScrollViewer : ScrollViewer
     {
         protected override void OnPreviewMouseWheel(MouseWheelEventArgs e)
         {
            base.OnPreviewMouseWheel(e);
            if (!e.Handled)
            {
                e.Handled = true;
                this.RaiseEvent(new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta)
                {
                    RoutedEvent = UIElement.MouseWheelEvent,
                    Source = this
                });
            }
        }
    }
票数 6
EN

Stack Overflow用户

发布于 2012-01-20 04:33:16

您是否尝试禁用ListView's ScrollBars

代码语言:javascript
复制
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled"
          ScrollViewer.VerticalScrollBarVisibility="Disabled" />
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8932720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档