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?
OriginalL'auteur Matthew Timbs | 2009-03-11
Vous devez vous connecter pour publier un commentaire.
Il y a un bon billet de blog sur cette erreur ici.
Bascially ce qui peut arriver est de changer certaines de taille dans un
MeasureOverride
quelque part qui provoque une autre mesure, qui permet de modifier la taille, ce qui provoque une mesure et ainsi de suite. J'ai couru dans cette fois, avant et fixé par la suppression de tout code qui a causé une mise à jour ou de les déclencher une mise à jour pendant la mise en cycle.Mise à jour: Depuis le blog a disparu, citant ici dans son intégralité:
blog de mort ;(
Wayback machine à la rescousse: web.archive.org/web/20110203182929/http://jeffhandley.com/...
OriginalL'auteur Bryant
Une cause commune, c'est de la manipulation
SizeChanged
et puis dans le gestionnaire de faire quelque chose qui affecte la taille de l'élément. Parfois, ce n'est pas évident - c'est peut-être la modification de l'enfant des éléments qui influent sur la taille de leur contenant, par exemple.OriginalL'auteur geofftnz
1.Si vous utilisez LongListSelector à l'intérieur de ScrollViewer, mieux le supprimer. J'ai été confrontée au même problème et mon LongListSelector était à l'intérieur de ScrollViewer. Au cours de ItemRealized de l'événement, a été d'obtenir cette erreur.
2.N'utilisez pas de updatelayout() à l'intérieur de itemrealized..j'ai été en utilisant quelque chose comme
Simplement utiliser ScrollTo
3.Si vous utilisez de l'image à l'intérieur de longlistselector, assurez-vous de définir la hauteur et la largeur de l'image.
OriginalL'auteur jee
J'ai eu le même problème et je l'ai mis toute la mise en page des mises à jour (changement de taille) dans un "invoquer" délégué fr invoquée plus tard, il cesse de s'écraser, mais vous, il est un bon changement, il est coincé dans une boucle
OriginalL'auteur Frederiek
J'ai eu le même problème, mais il ne s'est produite que très rarement, mon code n'a pas changé depuis des années et, plus récemment, quelqu'un a réussi à en faire l'expérience.
J'ai eu un TextBlock à l'intérieur d'un LongListSelector source de données et de ses FontSize a été fixé à 21 ans. Changement de taille de la police à TOUTE autre valeur résolu le problème pour moi...
Mon LongListSelectors est à l'intérieur d'un ScrollViewer.
Correctif:
OriginalL'auteur Comeradealexi