private async Task InitializeChildrenAsync()

in AMP/Views/NavAwarePage.cs [46:71]


        private async Task InitializeChildrenAsync(FrameworkElement uiElement, object state, object parentDataContext = null)
        {
           if (uiElement is null)
                return;

           if (uiElement.DataContext != null && !uiElement.DataContext.Equals(parentDataContext))
             await InitializeViewModels(uiElement, state);
           
           if (uiElement is Panel panel)
            {
                foreach (var element in panel.Children)
                {
                    await InitializeChildrenAsync(element as FrameworkElement, state, uiElement.DataContext);
                }
            }
            else if (uiElement is UserControl userControl)
            {
                await InitializeChildrenAsync(userControl.Content as FrameworkElement, state, uiElement.DataContext);
            }
            else if (uiElement is ContentControl contentControl)
            {
                var uiElementAsContentControl = (ContentControl)uiElement;
                await InitializeChildrenAsync(contentControl.Content as FrameworkElement, state, uiElement.DataContext);
            }
      
        }