【发布时间】:2018-08-08 16:28:44
【问题描述】:
我的 UWP (Windows 10) 应用程序中有一个列表视图。 理想情况下,它会在应用程序启动时加载 100 个项目。
当列表滚动到底部,即列表视图中的最后一个项目时,API 调用将继续并加载另外 100 个项目等等..
这是我的代码:
<ListView x:Name="lstSuggestions" Height="200" Width="250" Foreground="#333eb4" HorizontalAlignment="Left" Margin="60,10" SelectionChanged="lstSuggestions_SelectionChanged"></ListView>
以下调用绑定列表视图(应用启动时的前 100 个项目):
public async void GetData(string Id, string limit)
{
string mainUrlForSuggestions = ApiUrl + "&id=" + d;
string finalSelCharas = "";
using (var httpClient = new HttpClient())
{
var dataUri = await httpClient.GetStringAsync(mainUrlForSuggestions);
JsonObject jsonObject = JsonObject.Parse(dataUri.ToString());
JsonArray jsonArray = jsonObject["payload"].GetArray();
foreach (JsonValue groupValue in jsonArray)
{
JsonObject groupObject = groupValue.GetObject();
lstSuggestionsAdd.Add(new SuggestedWords { Name = groupObject.GetNamedString("sug_name"), ID = groupObject.GetNamedString("id") });
}
lstSuggestions.ItemsSource = lstSuggestionsAdd;
}
}
应用启动限制为 100,一旦列表结束,必须将限制设置为 200 或下 100 个项目并再次进行 API 调用。
我试图通过 pointerEntered 事件来实现这一点。但是,无法实现上述功能,因为它仅将分配给列表视图的高度与指针高度相匹配,因此当滚动查看器高度可能变化时,它不会起作用。我什至试图访问scrollviewer,但不能!
我还提到了以下网址:How do I allow a UWP ListView to scroll past the last item? && Detect when WPF listview scrollbar is at the bottom? && https://social.msdn.microsoft.com/Forums/windows/en-US/63b4b530-61d8-477f-af96-87e33260c919/uwa-how-to-detect-the-end-and-the-start-of-listview-and-load-more-data-items?forum=wpdevelop
但在我的情况下,它们都没有真正起作用。
我试图找到一个事件来实现这个功能,但没有找到。
谁能告诉我如何检测列表视图滚动是否到达终点(列表视图中的最后一项)???
请注意,我正在使用 Windows 10 UWP 应用程序而不是 win 8
【问题讨论】:
-
我们缺少一些信息:1)
lstSuggestions_PointerEntered是什么样的? 2)它被调用了吗? (用断点测试) 3)onitem_visible-like 事件中没有一些吗? -
@Stefan
lstSuggestions_PointerEntered每当指针移动到列表视图区域/部分时都会被调用。它只是捕获指针是否在列表视图 UI 区域中 -
我似乎看不出您的实际问题是什么。项目是否添加到列表视图中?如果是这样,您可以将它们滚动到视图中吗?
-
@Stefan 前 100 个项目被添加到列表视图中并且也可以滚动。现在假设如果用户滚动到最后一个项目,我想将接下来的 100 个项目加载到列表视图中。我也提到了同样的问题
-
我的代码将加载列表视图中的前 100 个项目,一旦列表滚动到最后一个项目/底部,它应该加载另外 100 个项目。在这种情况下,我是否包含
lstSuggestions_PointerEntered并不重要。你可以参考这个答案:[Detect when WPF listview scrollbar is at the bottom? ] (stackoverflow.com/a/37430977/8024811) 但对我来说没有帮助
标签: c# listview uwp windows-10-universal uwp-xaml