WPF - 如何将 onScroll 事件添加到 ListBox 并访问 ScrollViewer

WPF - How to add onScroll Event to ListBox and Access the ScrollViewer

我在 XAML 中这样定义我的 ListBox:

<ListBox Name="myListBox" 
         HorizontalContentAlignment="Stretch" 
         ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
         ScrollViewer.ScrollChanged="OnScrollChanged" <- I want to create onScrollChanged event
         Grid.Row="0">
         ...
</ListBox>

然后在我的cs文件中,我定义了这个事件:

private void OnScrollChanged(object sender, ScrollChangedEventArgs e)
{

    var scrollViewer = (ScrollViewer)sender; //ERROR
    if (scrollViewer.VerticalOffset == scrollViewer.ScrollableHeight)
        MessageBox.Show("This is the end");
}

我正在尝试检测用户何时滚动到列表框的最底部。但是我收到错误消息,无法将 ListBox 转换为 Scrollviewer。如何获取滚动查看器?

谢谢

在 XAML 中的 ListBox 周围添加 ScrollViewer,然后从那里订阅活动。

<ScrollViewer ScrollChanged="OnScrollChanged">
    <ListBox Name="myListBox" 
             HorizontalContentAlignment="Stretch"
             ScrollViewer.HorizontalScrollBarVisibility="Hidden"
             Grid.Row="0" />
</ScrollViewer>

代码隐藏可以保持不变。

在您当前的代码中,您试图将 ListBox("sender")转换为 ScrollViewer,但它无法做到,因此会抛出异常。