我试图通过某种程度的偏移量检测来实现这一点,但是由于偏移量是距左侧的距离,因此我不打算检测距右侧的距离。
这是我尝试过的:
private void AllEntries_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
if ( e.HorizontalChange != 0)
{
if (e.HorizontalOffset < 350)
{
//Do something
}
if (e.HorizontalOffset / e.ExtentWidth > 0.9)
{
//Do something
}
}
}
数据网格中的事件:
ScrollViewer.ScrollChanged="AllEntries_ScrollChanged"
答案 0 :(得分:1)
我认为您需要合并两个帖子:
将它们放在一起,后面的代码必须是这样的:
private void myGrid_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
if (e.HorizontalChange != 0)
{
var viewer = GetScrollViewer((DataGrid)sender);
if (viewer.HorizontalOffset + viewer.ViewportWidth == viewer.ExtentWidth)
{
MessageBox.Show("Right end");
}
}
else if (e.VerticalChange != 0)
{
var viewer = GetScrollViewer((DataGrid)sender);
if (viewer.VerticalOffset + viewer.ViewportHeight == viewer.ExtentHeight)
{
MessageBox.Show("Lower end");
}
}
}
private ScrollViewer GetScrollViewer(UIElement element)
{
if (element == null) return null;
ScrollViewer retour = null;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(element) && retour == null; i++)
{
if (VisualTreeHelper.GetChild(element, i) is ScrollViewer)
{
retour = (ScrollViewer)(VisualTreeHelper.GetChild(element, i));
}
else
{
retour = GetScrollViewer(VisualTreeHelper.GetChild(element, i) as UIElement);
}
}
return retour;
}