为什么DataPager.GetVisualDescendants()不返回任何结果

本文关键字:返回 任何 结果 DataPager GetVisualDescendants 为什么 | 更新日期: 2023-09-27 18:31:24

我有一个DataPager,一旦它填充了页面,它就会抛出一个nullreferenceexception。这有点奇怪,因为当我的数据很少或没有数据时,它不会抛出任何东西。我的代码在这里:

  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 到达 4 页时,GetVisualDescendants() 没有产生任何结果?如您所见,我已经检查了它是否可见以获取可视后代,并且此代码位于pageindexchanged事件中,因此一旦加载数据分页程序,它就会触发。对此有什么想法吗?任何帮助将不胜感激。谢谢!

为什么DataPager.GetVisualDescendants()不返回任何结果

答案是它触发了页面索引更改了两次。不知道为什么,但 Silverlight 似乎在数据寻呼程序加载和加载时触发了 pageindexchanged。所以它触发了这段代码两次,我所做的只是添加一行来检查 GetVisualDescendants() 是否。计数 != 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;
       }
   }
}