[Silverlight] Bug dans les Pixel Effects
Hier et ce après des heures de recherches nous (Maarten De Wilde et moi-même) avons trouvé un bug plutôt gênant dans la gestion des Pixel Shader Effect de Silverlight...
En effet, lors de son utilisation avec une TextBox (oui vous avez bien lu...) les performances se dégradent rapidement.
Exemple de référence :
Pour ce qui suit, et pour voir clairement le problème, nous alons utiliser le enableRedrawRegion dans les paramètres de l'object HTML
<param name="enableRedrawRegions" value="true" />
Prenons comme base une Grid de 500x500 avec une TextBox au millieu.
Lorsqu'on lance l'application, au moment ou l'on donne le Focus à la TextBox, on peut voir que le "Caret" clignotte en couleur (grâce au enableRedrawRegion) et cela est tout à fait normal.
Maintenant commencent les problèmes...
Appliquons maintenant une DropShadowEffect à la Grid et relancons l'exemple.
On peu alors voir que lorsque la TextBox prend le Focus, TOUTE la Grid est clignotte....
Pire encore, lorque la TextBox perd le Focus, ca continue de clignotter...
Preuve en est que si on ouvre le Task Manager le CPU Usage du browser monte significativement...
Et maintenant ?
Le problème a été remonté chez Microsoft et je ne peux qu'espérer que celui-ci sera fixé dans la prochaine version de Silverlight...
Néanmoins pour ceux qui veulent continuer à utiliser une DropShadow sans impacter les performances (ou les impacter moins...) vous pouvez toujours utiliser la technique multicouche... Il suffit pour cela d'avoir deux object l'un en dessous de l'autre, celui du dessous contiendrait la DropShadow. Dans notre exemple de référence, on ajouterais un Rectangle blanc dans la Grid sous la TextBox.
A bientôt !!
DjoDjo
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :