locked
WPf et Silverlight Loaded Event fired before visual tree compeltely built RRS feed

  • Question

  • Problème de déclenchement de l'event "loaded" sur un custom control : VisualTree non totalement créé.

    Scénario :

    Custom control dans un xap (sv) ou dll (WPF) chargé dynamiquement.

    dans le constructeur :  this.Loaded += component_Loaded;

    L'evt Loaded se déclenche mais dans la méthode component_Loaded {

     int count = VisualTreeHelper.GetChildrenCount(elt); n'est pas correct 

      UIElement child = VisualTreeHelper.GetChild(elt, i) as UIElement; dans une boucle ne boucle pas sur l'ensemble des child.

    }

    En implémentant les mêmes appels dans un Timer, l'arbre est correct

    component_Loaded'

    myTimer();

    }

      private void myTimer() {
              
                myDispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 10);
                myDispatcherTimer.Tick += new EventHandler(Each_Tick);
                myDispatcherTimer.Start();
            }
            public void Each_Tick(object o, EventArgs sender) {
                    AFFICHAGE DE l4ARBRE ICI : OK !
                    myDispatcherTimer.Stop();
            }


    • Modifié pserenne lundi 7 avril 2014 13:50 correction
    • Déplacé Aurel Bera lundi 7 avril 2014 14:45 OnTopic
    lundi 7 avril 2014 13:49

Réponses

  • Bonjour

    Dans la doc MSDN pour Loaded c'est spécifiée que l'évènement apparais après XAML est parcouru  mais avant Render. Donc si vous ajoutez des éléments dans Render ou évènements après, on a une explication. Même un dataBinding peut influencer cela.

     

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse Aurel Bera jeudi 17 avril 2014 07:56
    vendredi 11 avril 2014 08:35

Toutes les réponses