Item.Children - это загружаемое свойство с отложенным доступом, и я бы определенно не рекомендовал использовать его точно так, как показано здесь.
Перед тем, как опубликовать это, я немного покопался в API, чтобы посмотреть, нет ли в действительности способа подсчитать количество дочерних элементов без загрузки этого свойства, но, увы, я не смог найти способ, который мог бы показаться " законным». Похоже, что связано только свойство .HasChildren, и оно работает, выполняя большинство (но не все) того, что свойство .Children уже делает.
Однако, учитывая его ленивую загрузку, сохраните результат свойства в приватном поле для максимальной эффективности. Я помню, как однажды прочитал это в официальном руководстве разработчика, я могу при необходимости найти точную ссылку.
ChildList itemChildren = myItem.Parent.Children;
// Continue doing random() etc here, but using the itemChildren field.