怎样判断Listbox拉到底部?解决方案

怎样判断Listbox拉到底部?
 <Grid x:Name="ContentPanel" Grid.Row="1"  Margin="1,0,1,0" >
            <ListBox x:Name="MainListBox"  SelectionChanged="MainListBox_SelectionChanged"  >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <Image Margin="2"  VerticalAlignment="Top"  Source="{Binding Path=ImageUri}"  Width="40" Height="40" />
                            <StackPanel  Orientation="Horizontal" Margin="1">
                                <TextBlock Width="50"   FontSize="20" VerticalAlignment="Top" HorizontalAlignment="Left" Text="{Binding Path=Id}" />
                                <TextBlock Width="100"   FontSize="26" VerticalAlignment="Top" HorizontalAlignment="Left" Text="{Binding Path=Name}" />
                                
                            </StackPanel>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </Grid>


前台xaml怎么添加监听事件?
后台怎么写?
看了网上一些例子,感觉还是比较复杂,有啥好的办法。
只要判断拉到最后一行即可。。
------解决方案--------------------
很难想象还有其他方法,因为listbox的滚动是其模板里面的scrollviewer实现的,只有监听这个scrollviewer的VerticalOffset是否达到最大高度判断是否滚动到底部

简单的方式就是VisualTreeHelper找到这个scrollviewer,为它的VerticalOffset依赖属性增加一个DependencyPropertyListener,通过它的值是否达到最大滚动高度判断

网上有封装好的自定义Command依赖属性,我记得滚动到底部加载更多这样的代码应该很多啊
------解决方案--------------------
在listbox底部加一个 加载下一页按扭更简单