C# 为什么DataPager.getVisualDescendats()不返回结果?

C# 为什么DataPager.getVisualDescendats()不返回结果?,c#,silverlight,C#,Silverlight,我有一个DataPager,一旦填充了页面,它就会抛出一个nullreferenceexception。这有点奇怪,因为在我几乎没有数据的时候,它不会抛出任何东西。我的代码在这里: private void dataPager_PageIndexChanged(object sender, System.EventArgs e) { if ((sender as DataPager).Visibility == System.Windows.Visibility.Vi

我有一个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;
        }
    }
private void dataPager\u PageIndexChanged(对象发送方,System.EventArgs e)
{
if((发送方作为DataPager.Visibility==System.Windows.Visibility.Visibility)
{
if((发送方作为DataPager.PageIndex==(发送方作为DataPager.PageCount-1)
{
(作为DataPager的发件人)。GetVisualDescendats().OfType()。其中(b=>b.Name==“NextPageButton”)。SingleOrDefault().IsEnabled=false;
}
其他的
(作为DataPager的发件人)。GetVisualDescendats().OfType()。其中(b=>b.Name==“NextPageButton”)。SingleOrDefault().IsEnabled=true;
}
}

我不明白的是,当DataPager到达4页时,为什么(发送者作为DataPager.getVisualDescendats()的结果视图不产生结果?正如您所看到的,我已经检查了它在获取可视化子体时是否可见,并且该代码位于pageindexchanged事件中,因此它会在加载datapager后立即激发。对这个有什么想法吗?任何帮助都将不胜感激。谢谢

答案是它触发了页面索引交换两次。不知道为什么,但Silverlight似乎在加载datapager时触发了PageIndexchange。所以它触发了两次这段代码,我所做的只是添加了一行代码来检查getVisualDescendats().Count!=我希望至少一切都顺利

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;
       }
   }
}
private void dataPager\u PageIndexChanged(对象发送方,System.EventArgs e)
{
if((发送方作为DataPager.Visibility==System.Windows.Visibility.Visibility)
{
if((发送方作为DataPager.GetVisualDescendats().Count!=0)
{
if((发送方作为DataPager.PageIndex==(发送方作为DataPager.PageCount-1)
{
(作为DataPager的发件人)。GetVisualDescendats().OfType()。其中(b=>b.Name==“NextPageButton”)。SingleOrDefault().IsEnabled=false;
}
其他的
(作为DataPager的发件人)。GetVisualDescendats().OfType()。其中(b=>b.Name==“NextPageButton”)。SingleOrDefault().IsEnabled=true;
}
}
}