繁体   English   中英

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

[英]Scroll viewer contains listbox. vertical scroll bar issue on selecting bottom element in wpf

我已将列表框放在滚动查看器中。

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

我可以滚动浏览所有列表项,但是当我向下滚动列表框项目并选择列表框的底部项目时,我的垂直滚动条将移至初始位置。

我相信您正在寻找的只是:

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

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

当选择项目时,为什么滚动到顶部? 好吧,这是因为当您在HostScrollViewer上设置ScrollViewer.CanContentScroll="False"并在列表框中选择一个项目时,HostScrollViewers滚动到ListBox而不是listboxitem。 仅仅因为ListBox还有另一个scrollviewer。

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

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

但是视觉效果是一样的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM