我如何包装ListView和GridView在ScrollViewer不破坏ScrollViewer滚动

本文关键字:ScrollViewer GridView 滚动 ListView 何包装 包装 | 更新日期: 2023-09-27 17:50:21

我有这样的布局:

<ScrollViewer>
    <StackPanel>
        <ListView>
            <ListView.View>
                <GridView>
                    <!-- Content -->
                </GridView>
            </ListView.View>
        </ListView>
    <!-- Filtering Controls -->
    </StackPanel>
</ScrollViewer>

屏幕没有固定高度或最大高度。滚动条显示良好,工作良好,但是当鼠标在列表/GridView中的项目上时,ScrollViewer没有接收到事件,也没有滚动。

我读过关于如何实现扩展,但这似乎做过头了,使列表/GridView传递鼠标滚轮滚动事件到ScrollViewer或忽略它们的最简单的解决方案是什么?

我如何包装ListView和GridView在ScrollViewer不破坏ScrollViewer滚动

这是因为listview处理滚动事件,我可以建议的最简单的方法是覆盖listview的内容并插入一个itemsPresenter,其中没有滚动属性。

我用这样的方法解决了这个问题。

<ListView>
  <ListView.Template>
    <ControlTemplate>
      <ItemsPresenter/>
    </ControlTemplate>
  </ListView.Template>
</ListView>

请看这里关于这个话题的详细讨论