Почему свойство Parent контейнера ItemsControl возвращает значение NULL, а не Panel, на которой он находится?

Это меня поставило в тупик. У нас есть собственный ItemsControl, который использует как пользовательские контейнеры, так и пользовательскую панель в качестве ItemsHost. Теперь на панели есть некоторые метрики, которые нужны контейнерам для визуализации. Так как они являются прямыми потомками панели в визуальном дереве, вы 'я думаю, что свойство Parent контейнера вернет панель, но это не такт!

Я также подтвердил эту точную вещь, используя Snoop на стандартном ListBox, так что это неt исключительно для нашего кода, но, видимо, все контейнеры ItemsControls.

Теперь я знаю, что могу использовать VisualTreeHelper для получения визуального родителя (что мне нужно), но зачем родитель?не быть панелью?

Если аргумент заключается в том, что панель является просто частью визуального дерева, а родительский объект зарезервирован для логического дерева, тородителем будет ItemsControl?

Если аргумент, указывающий на наличие контейнера, тоже является частью ItemsControl 'Если визуальное дерево, а не логическое дерево, то почему содержимое, размещенное в контейнере, возвращает контейнер как его родительское свойство?

Это означает, что если выИдя по логическому дереву от элемента данных, вы останавливаетесь на контейнерах, что может объяснить, почему наши привязки от контейнеров к панелям не отображаются.т работает как положено. (Я считаю, что привязки основаны на логической иерархии, а не на визуальной, но яЯ должен проверить, чтобы быть уверенным.)

Ответы на вопрос(2)

Ваш ответ на вопрос