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

时间:2015-12-25 03:32:44

标签: c# wpf listbox scrollview

我在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的最底部。但是我得到的错误是ListBox无法转换为Scrollviewer。我如何获得滚动查看器?

由于

1 个答案:

答案 0 :(得分:1)

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

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

代码隐藏可以保持不变。

在您当前的代码中,您尝试将ListBox(“发件人”)转换为ScrollViewer,但它无法执行此操作,因此会抛出异常。