滚动查看器包含列表框.在wpf中选择底部元素时出现垂直滚动条问题

本文关键字:元素 底部 问题 滚动条 垂直 选择 包含 列表 wpf 滚动 | 更新日期: 2023-09-27 18:12:34

我在滚动查看器中放置了一个列表框。

<ScrollViewer x:Name="HostScrollViewer" VerticalScrollBarVisibility="Auto" CanContentScroll="True" VerticalAlignment="Stretch">
    <ListBox x:Name = "listBox1">
      <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
          <StackPanel IsItemsHost="True" VerticalAlignment="Stretch"
                                    ScrollViewer.VerticalScrollBarVisibility="Auto"
                                    ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                                    ScrollViewer.CanContentScroll="False"
                                    HorizontalAlignment="Stretch" />
        </ItemsPanelTemplate>
      </ListBox.ItemsPanel>
    </ListBox>
  </ScrollViewer>

我可以滚动所有列表项,但是当我向下滚动列表框项并选择列表框底部的项时,垂直滚动条就会回到初始位置

滚动查看器包含列表框.在wpf中选择底部元素时出现垂直滚动条问题

我相信你正在寻找的正是:

<ListBox x:Name="listBox1" ScrollViewer.CanContentScroll="False" />

问题在你的代码滚动鼠标轮是,你有两个滚动查看器,实际上:HostScrollViewer和一个在列表框模板。

为什么它滚动到顶部,当你选择项目?这是因为当你在HostScrollViewer上设置ScrollViewer.CanContentScroll="False"时,你在listbox中选择一个项目,hostscrollviewerscroll到listbox而不是listboxitem。只是因为ListBox有另一个滚动查看器。

另一个选项是在列表框中禁用scrollviewer:

<ScrollViewer x:Name="HostScrollViewer" CanContentScroll="False">
    <ListBox x:Name = "listBox1" 
             ScrollViewer.VerticalScrollbarVisibility="Disabled"/>
</ScrollViewer>

但是视觉效果是一样的