2013-04-11 69 views
0

搜索很多後,最後我會問這個給你們。
i'v創建了scrollviewer,其中包含項目(listboxItems)以及從webservices獲取的這些項目。但是一次只能提取5件物品。所以最初這將是5個項目,那麼未來5(附加到scrollviewer),然後接下來的5等等......fire(call)方法,當滾動查看器滾動到其結尾

注:尤其是圓形listBoxitems均採用scrollviewer內,而不是列表框

數據從webservice牽強還包含 --->

total items 
numResults (current number of items fetched) 

現在假設我的方法來獲取數據--->

getData(int nextResult) 
{ 
     // some code to fetch the data 
} 

其中nextResult是下一個項目編號(例如: - nextResult是6,如果請求第二次)

,但我不能寫代碼來檢測用戶滾動的ScrollViewer中到底&然後一種被稱爲或被解僱的方法,不管說什麼!

心中已經受到嚴重的ScrollViewer的VerticalOffsetExtentHeightViewportHeightScrollableHeight等,要使用它們&計算所需的信息,以達到上述要求之間的混淆。

所以如果有人知道關於相同或使用永遠scrollviwer,請請回答。

回答

1

我通過與相應的事件註冊新的DependencyProperty ListVerticalOffset實現它:

// Constructor 
    public MainPage() 
    { 
     InitializeComponent(); 

     ListVerticalOffsetProperty = DependencyProperty.Register("ListVerticalOffset", typeof(double), typeof(MainPage), new PropertyMetadata(OnListVerticalOffsetChanged)); 

     YourScrollViewer.Loaded += YourScrollViewer_Loaded; 
    } 

    void YourScrollViewer_Loaded(object sender, RoutedEventArgs e) 
    { 
     var binding = new Binding 
      { 
       Source = YourScrollViewer, 
       Path = new PropertyPath("VerticalOffset"), 
       Mode = BindingMode.OneWay 
      }; 
     SetBinding(ListVerticalOffsetProperty, binding); 
    } 

    private void OnListVerticalOffsetChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) 
    { 
     var atBottom = YourScrollViewer.VerticalOffset >= YourScrollViewer.ScrollableHeight; 
     if (atBottom) MessageBox.Show("End"); 
    } 

    public readonly DependencyProperty ListVerticalOffsetProperty; 

    public double ListVerticalOffset 
    { 
     get { return (double)GetValue(ListVerticalOffsetProperty); } 
     set { SetValue(ListVerticalOffsetProperty, value); } 
    } 

可能是該解決方案或它的實現是不是最佳的,但它爲我工作。

+0

thanx @Lumen,它的工作! – 2013-04-11 10:09:07

+0

Hi Lumen,你的解決方案也適用於我,但是我在1個全景圖頁面上有2個列表框,所以我在上面註冊了2個代碼版本,但是2個列表框正在混合他們得到的數據,我如何鏈接一個依賴項屬性用listbox? – Bohrend 2013-09-20 13:22:03