Silverlight Erreur “Disposition Cycle Détecté Mise en page n'a pas pu terminer” lors de l'utilisation de contrôle personnalisé

Je suis en train de construire un contrôle personnalisé dans Silverlight en dérivant de ContentControl et de faire une mise en forme particulière de mettre un dropshadow derrière le contenu.

J'ai presque eu de travail, mais nous avons récemment couru dans une étrange erreur. Il fonctionne très bien si elle contient quelque chose en plus d'une Frontière ou d'une Grille/Stackpanel/etc qui ne sont pas explicitement définis en hauteur et en largeur.

J'obtiens une erreur JavaScript dans IE, et le texte dit:

Erreur D'Exécution 4008... Présentation Du Cycle De Détecté... Mise En Page N'A Pas Pu Terminer.

Si je spécifier une hauteur et largeur sur le contenu de la grille/stackpanel/etc il fonctionne très bien.

Il y a une tonne sur le web au sujet de cette erreur lors de trop nombreuses zones de texte sont utilisés (plus de 250), mais je suis capable de reproduire mon erreur avec un seul bouton dans une grille.

Je n'ai pas de zones de texte sur la page. L'erreur a à voir avec la détection d'une boucle infinie. J'ai mis quelques points d'arrêt dans le code et il semble que le "SizeChanged" événement est appelé beaucoup de choses au cours de rendu, et à chaque fois la hauteur/largeur incréments de 10.

Je suis en supposant que le réglage par défaut de la hauteur/largeur de causes d'ignorer cette incrémentation du numéro, mais je n'ai aucune idée de pourquoi cette erreur se produit.

Quelqu'un a rencontré ce ou avez des idées?

J'ai rencontré ce problème avec le Telerik RadWindow de contrôle (il serait sans doute également se produire avec la régulière ChildWindow). Le problème est survenu quand j'ai précisé MinHeight et MinWidth sans spécifier la Largeur et la Hauteur. Lorsque la taille de la fenêtre de contenu a changé, un aménagement du cycle a eu lieu. Réglage de la Largeur et de la Hauteur avec les mêmes valeurs que MinWidth et MinHeight résolu le problème.

OriginalL'auteur Matthew Timbs | 2009-03-11