2012-06-07 3 views

답변

4

나는 "달성하다"는 것은 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에 자동으로 나타납니다.

관련 문제