我需要的要求是..
最初我有一组绑定到 ListBox 的数据...如果我们滚动到最后,我将向集合中添加更多数据并更新 ListBox...有没有办法在 Windows phone 中实现这一点?
我需要的要求是..
最初我有一组绑定到 ListBox 的数据...如果我们滚动到最后,我将向集合中添加更多数据并更新 ListBox...有没有办法在 Windows phone 中实现这一点?
我想“实现这一点”是指检测 ListBox 是否位于末尾的可能性。在这种情况下,这应该会有所帮助。
您首先需要访问 ScrollViewer 控件,以查看用户是否滚动,以及当前位置是什么。如果我的页面名为 ListContent,那么这段代码应该会给您一个良好的开端:
public partial class ListContent
{
private ScrollViewer scrollViewer;
public ListContent()
{
InitializeComponent();
Loaded += OnLoaded();
}
protected virtual void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
{
scrollViewer = ControlHelper.List<ScrollViewer>(lbItems).FirstOrDefault();
if (scrollViewer == null) return;
FrameworkElement framework = VisualTreeHelper.GetChild(viewer, 0) as FrameworkElement;
if (framework == null) return;
VisualStateGroup group = FindVisualState(framework, "ScrollStates");
if (group == null) return;
group.CurrentStateChanged += OnListBoxStateChanged;
}
private VisualStateGroup FindVisualState(FrameworkElement element, string name)
{
if (element == null)
return null;
IList groups = VisualStateManager.GetVisualStateGroups(element);
return groups.Cast<VisualStateGroup>().FirstOrDefault(@group => @group.Name == name);
}
private void OnListBoxStateChanged(object sender, VisualStateChangedEventArgs e)
{
if (e.NewState.Name == ScrollState.NotScrolling.ToString())
{
// Check the ScrollableHeight and VerticalOffset here to determine
// the position of the ListBox.
// Add items, if the ListBox is at the end.
// This event will fire when the listbox complete stopped it's
// scrolling animation
}
}
}
如果您正在谈论动态添加数据,请确保您使用 ObservableCollection 来存储您的数据。添加的项目将自动显示在您的列表框中。