我有一个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)的结果视图.GetVisualDescendants()在dataPager达到4页时没有结果?正如您所看到的,我已经检查过它是否可见以获取可视后代,并且此代码位于pageindexchanged事件上,因此一旦加载数据页,它就会触发。对这个有什么想法吗?任何帮助将非常感激。谢谢!
答案 0 :(得分:0)
答案是它触发了pageindexchanged两次。 Dunno为什么,但是当datapager加载和加载时,Silverlight似乎触发了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;
}
}
}