2012-11-14 33 views
6

Khi LongListSelector của tôi được cuộn xuống dưới cùng, tôi muốn tự động tải thêm dữ liệu từ dịch vụ web. Cũng giống như ứng dụng Cửa hàng. Vấn đề của tôi là tôi không thể tìm thấy bất kỳ sự kiện nào để kích hoạt hành động tải thêm.Phân trang liên tục với LongListSelector

Trả lời

13

Khuyến nghị từ Microsoft là sử dụng sự kiện LongListSelector.ItemRealized, kiểm tra xem đó là mục cuối cùng (hoặc mục cuối cùng thứ N) trong danh sách được "nhận ra" và nếu có, thì nó sẽ bắt đầu tìm nạp bản ghi mới . Về mặt UX, tốt nhất là nên hiển thị ProgressIndicator trên SystemTray vào thời điểm đó và không bắt chước iOS với các trình quay nội tuyến.

LongListSelector.ItemRealized thực sự là một sự kiện rất thú vị vì nó kích hoạt khi một mục đã được dữ liệu ràng buộc với một ListBoxItem ảo hóa. Điều đó có nghĩa rằng logic ảo hóa LongListSelector cho rằng nó cần phải chuẩn bị FrameworkElement để được hiển thị trên màn hình. ListBoxItem có thể hoặc có thể không có trên màn hình, nhưng đó là một dấu hiệu tốt nó nhận được ở đó.

Đối với một mẫu mã nhìn thấy @http://code.msdn.microsoft.com/wpapps/TwitterSearch-Windows-b7fc4e5e

void resultListBox_ItemRealized(object sender, ItemRealizationEventArgs e) 
    { 
     if (!_viewModel.IsLoading && resultListBox.ItemsSource != null && resultListBox.ItemsSource.Count >= _offsetKnob) 
     { 
      if (e.ItemKind == LongListSelectorItemKind.Item) 
      { 
       if ((e.Container.Content as TwitterSearchResult).Equals(resultListBox.ItemsSource[resultListBox.ItemsSource.Count - _offsetKnob])) 
       { 
        Debug.WriteLine("Searching for {0}", _pageNumber); 
        _viewModel.LoadPage(_searchTerm, _pageNumber++); 
       } 
      } 
     } 
    } 
+0

hoàn hảo, cảm ơn! –

+0

Xin chào, đây là gì _offsetKnob này. – Noorul

+0

@JustinAngel, Nó sẽ cháy lần đầu tiên khi tôi tải bộ sưu tập như thế nào tôi sẽ vượt qua kịch bản đó, tôi đã xem mẫu mã. bạn đính kèm. – Eldho

Các vấn đề liên quan