Это зависит от того, какой контроль вы передаете как ctl
Если вы пройдете окно, вы получите границу
Если вы пройдете сетку (макет), вы получитедочерняя сетка.
РЕДАКТИРОВАТЬ
Я только что заметил эту строку
Dim ctl As FrameworkElement = Me.MainWindow
Измените ее на:
Dim ctl As FrameworkElement = Me
РЕДАКТИРОВАТЬ2
Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
Dim ctl As FrameworkElement
ctl = LayoutRoot
Dim ChildrenCount As Integer = VisualTreeHelper.GetChildrenCount(ctl)
For i As Integer = 0 To ChildrenCount - 1
Dim Child As FrameworkElement = VisualTreeHelper.GetChild(ctl, i)
Debug.WriteLine(Child.ToString() + ": " +
VisualTreeHelper.GetChildrenCount(Child).ToString())
Next
End Sub