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