我在这里试图做的是在wpf datagrid控件中加载尽可能多的行,直到它溢出(也可以看到垂直滚动查看器)。这是我的代码:
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;
}
private void M_vm_LoadUserCompleted(int resultCount)
{
ScrollViewer sv = GetScrollViewer(lst);
if (sv == null)
{
return;
}
if (sv.ComputedVerticalScrollBarVisibility != Visibility.Visible &&
resultCount > 0)
{
// Load more.
m_vm.LoadMoreCommand.Execute(null);
}
}
在成功向REST API服务器发出请求后,将调用M_vm_LoadUserCompleted
。当前,它在单个请求中提取15行(受后端服务器限制)。在我将其放入选项卡控件之前,此解决方案实际上是有效的。因此,问题在于,当我切换到另一个选项卡时,属性sv.ComputedVerticalScrollBarVisibility
从未变为Visible
。因此,它不会一直运行直到数据网格“溢出”,而是一直运行,以便将所有数据(数千行)加载到我的应用程序中,从而导致非常糟糕的用户体验。当未选择包含滚动查看器的当前选项卡时,这是滚动查看器的预期行为吗?如何克服这个问题。非常感谢您的帮助。谢谢。