private void memberViewContainer_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
if (_layoutMode != LayoutMode.ShowAll)
return;
_showIndex = memberViewScrollViewer.VerticalOffset / 139.0;//更新屏幕显示的当前位置,用来判断某个view是否在可见范围,如果在可见范围则触发滚动事件
if (e.ExtentHeightChange == 0)//ExtentHeightChange为滚动条长度变化,当滚动触发时值为0,非滚动触发时值为变化量
{
SubscribeMemberVideo();//触发滚动事件
//MessageBox.Show(Convert.ToString(++cout));
}
else if (isViewVisible)
{
SubscribeMemberVideo();//触发滚动事件
//MessageBox.Show(Convert.ToString(++cout));
}
}
其实主要就是e.ExtentHeightChange这个函数,它会返回一个double的值,这个值代表了滚动条长度的变化量,当滚动的时候触发滚动事件,这个值为0,当添加或删除触发滚动事件,这个值为滚动条长度的变化量,所以可以根据这个值是否为0来区分两种触发状态,从而运行不同的逻辑