Это как-то связано с OnVisualParentChanged
. В варианте FrameworkElement.cs он делает private void TryFireInitialized()
, который, в свою очередь, вызовет protected virtual void OnInitialized(EventArgs e)
, чтобы вы могли туда попасть.
Это зависит от того, какую информацию вам нужно знать. Насколько я могу судить, единственное место, где можно получить уведомление о том, что родитель меняется, и иметь доступ к старому родительскому объекту, - OnVisualParentChanged (в качестве параметра передается старый родительский элемент). В противном случае любое другое место для вас будет доступно только для доступа к новому родителю, так как оно уже изменено.
Возможно, вам также потребуется изучить некоторые классы, наследующие FrameworkElement, и посмотреть, будут ли они раскрывать какие-либо дополнительные свойства или методы, которые могут вам помочь.
Я не уверен, что вам нужно делать точно, но я часто использую событие IsVisibleChanged, если мне нужно что-то ждать, пока все закончится. – jugg1es