C# 调用VisualTreeHelper.GetChild()时ArgumentOutOfRangeException

C# 调用VisualTreeHelper.GetChild()时ArgumentOutOfRangeException,c#,wpf,visualtreehelper,C#,Wpf,Visualtreehelper,调用VisualTreeHelper.GetChild()时,我不时遇到ArgumentOutOfRangeException 异常提到当VisualChildrenCount等于0时不调用该方法-这是调用之前的if应该做的事情 我是不是漏掉了什么明显的东西?我还尝试访问contentPresenter.VisualChildrenCount,但该属性受保护 如果具有给定索引的子级不存在,则GetChild方法将抛出ArgumentOutOfRangeException。异常消息引用了您传入的。

调用
VisualTreeHelper.GetChild()
时,我不时遇到
ArgumentOutOfRangeException

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

我是不是漏掉了什么明显的东西?我还尝试访问contentPresenter.VisualChildrenCount,但该属性受保护


如果具有给定索引的子级不存在,则
GetChild
方法将抛出
ArgumentOutOfRangeException
。异常消息引用了您传入的。正如您已经注意到的,此属性受保护

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

if (VisualTreeHelper.GetChildrenCount(contentPresenter) > 0)
{
   if (VisualTreeHelper.GetChild(contentPresenter, 0) is UIElement contentVisual)
   {
      // ...your code.
   }
}

太棒了,这完全有道理——我想象smth已经是这样了,但不知道如何访问它。谢谢,我不知道为什么会被否决——旧代码显然是错误的,但同时这很容易被误解。毕竟,异常是“VisualChildrenCount”,而不是GetChildrenCount()。。。