-1

有时我会ArgumentOutOfRangeException遇到打电话的时候VisualTreeHelper.GetChild()

例外提到当等于 0 时不调用该方法VisualChildrenCount- 这是if调用之前应该做的事情。

我在这里遗漏了一些明显的东西吗?我也尝试访问contentPresenter.VisualChildrenCount,但该属性受到保护。

带有 AregumentOutOfRangeException 的代码。

4

1 回答 1

2

如果具有给定索引的孩子不存在,该GetChild方法将抛出一个。ArgumentOutOfRangeException异常消息是指您传入的VisualChildrenCount属性Visual。该属性protected正如您已经注意到的那样。

但是,您可以改用GetChildrenCountonVisualTreeHelper。此方法将在内部访问上述VisualChildrenCount传入的属性。Visual

if (VisualTreeHelper.GetChildrenCount(contentPresenter) > 0)
{
   if (VisualTreeHelper.GetChild(contentPresenter, 0) is UIElement contentVisual)
   {
      // ...your code.
   }
}
于 2020-12-14T19:14:54.133 回答