2012-04-18 262 views
0

我有一個DataPager,一旦它填充頁面,它會拋出nullreferenceexception。這有點奇怪,因爲當我有很少或沒有數據時,它不會拋出任何東西。我的代碼是在這裏:爲什麼DataPager.GetVisualDescendants()不返回結果?

private void dataPager_PageIndexChanged(object sender, System.EventArgs e) 
    { 
     if ((sender as DataPager).Visibility == System.Windows.Visibility.Visible) 
     { 
      if ((sender as DataPager).PageIndex == (sender as DataPager).PageCount - 1) 
      { 
       (sender as DataPager).GetVisualDescendants().OfType<Button>().Where(b => b.Name == "NextPageButton").SingleOrDefault().IsEnabled = false; 
      } 
      else 
       (sender as DataPager).GetVisualDescendants().OfType<Button>().Where(b => b.Name == "NextPageButton").SingleOrDefault().IsEnabled = true; 
     } 
    } 

我不明白的是爲什麼會導致視圖(如發件人DataPager的).GetVisualDescendants的()產生任何結果時DataPager的到達4頁?正如你所看到的,我已經檢查過它是否爲Visible可見的後代,並且這個代碼位於pageindexchanged事件中,所以一旦數據加載器被加載,它就會觸發。對此有任何想法?任何幫助將非常感激。謝謝!

回答

0

答案是它觸發了pageindexchanged兩次。不知道爲什麼,但Silverlight似乎在datapager加載和加載時觸發pageindexchanged。所以它激發了這段代碼兩次,我所做的只是添加了一行來檢查GetVisualDescendants()。Count!= 0是否正常,至少我希望如此。

private void dataPager_PageIndexChanged(object sender, System.EventArgs e) 
{ 

    if ((sender as DataPager).Visibility == System.Windows.Visibility.Visible) 
    { 
     if((sender as DataPager).GetVisualDescendants().Count != 0) 
     { 
      if ((sender as DataPager).PageIndex == (sender as DataPager).PageCount - 1) 
      { 
      (sender as DataPager).GetVisualDescendants().OfType<Button>().Where(b => b.Name == "NextPageButton").SingleOrDefault().IsEnabled = false; 
      } 
      else 
      (sender as DataPager).GetVisualDescendants().OfType<Button>().Where(b => b.Name == "NextPageButton").SingleOrDefault().IsEnabled = true; 
     } 
    } 
} 
相關問題