3
나는 요구 사항을 필요로한다. ..Windows Phone에서 스크롤이 끝나면 ListBox에 항목을 추가 하시겠습니까?
처음에는 ListBox에 바인딩 된 데이터 집합이있다 ... 우리가 끝까지 스크롤하면 컬렉션에 더 많은 데이터를 추가하고 ListBox를 업데이트한다. Windows phone에서이 작업을 수행 할 수있는 방법이 있습니까?
나는 요구 사항을 필요로한다. ..Windows Phone에서 스크롤이 끝나면 ListBox에 항목을 추가 하시겠습니까?
처음에는 ListBox에 바인딩 된 데이터 집합이있다 ... 우리가 끝까지 스크롤하면 컬렉션에 더 많은 데이터를 추가하고 ListBox를 업데이트한다. Windows phone에서이 작업을 수행 할 수있는 방법이 있습니까?
나는 "달성하다"는 것은 ListBox가 끝에 있는지를 감지 할 수있는 가능성을 의미합니다. 이 경우 도움이됩니다.
먼저 사용자가 스크롤했는지 그리고 현재 위치가 무엇인지 알아 보려면 ScrollViewer 컨트롤에 액세스해야합니다.
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에를 사용하고 있는지 확인 : 내 페이지가하는 listContent를 호출하면,이 코드는 당신에게 좋은 시작을 제공해야합니다. 추가 된 항목이 ListBox에 자동으로 나타납니다.