2010-07-28 13 views
0

J'ai lu que le fait de placer une toile dans un scrollviewer ne fonctionnerait pas car la toile ne rapporte pas sa taille. J'ai expérimenté avec différents conteneurs (frontières, grilles, canevas et scrollviewers) et je pourrais vraiment faire avec une explication simple de la façon dont les scrollviewers se comportent dans des conteneurs imbriqués. par exemple. Si j'ai une hiérarchie de conteneur de UserControl> Grid1> Canvas1> ScrollViewer> Grid2> Canvas2, les barres de défilement apparaissent-elles autour de Grid2 lorsque Canvas2 devient plus large que Canvas1? (ou plus large que UserControl) Sinon, comment dois-je organiser mes conteneurs afin que je puisse ajouter des charges d'uielements à Canvas2 et que des barres de défilement apparaissent si nécessaire. (La largeur et la hauteur de mon contrôle utilisateur sont définies sur 100%)Barres de défilement en toile Silverlight

Répondre

1

Canvas fonctionnera avec un ScrollViewer si vous lui donnez explicitement une taille. Le problème vient du fait que si vous ne fournissez pas de hauteur et de largeur pour un contrôle, il essaiera de déterminer sa zone disponible en fonction de son conteneur parent. Un ScrollViewer a cependant une surface disponible infinie.

Prenez par exemple Grid. Si je définis un Grid qui a 2 colonnes Largeur étoile et 2 lignes Hauteur étoile. Comment le Grid sait-il quelle devrait être la largeur de chacune de ces colonnes? L'étoile dit qu'ils devraient être la moitié de la zone disponible, mais à l'intérieur d'un ScrollViewer la zone disponible est l'infini.

Quelles commandes ajoutez-vous à Canvas2? Si vous les ajoutez avec des positions fixes, le ScrollViewer se développera pour contenir tous les éléments. Si vous ne leur donnez pas de positions fixes, toutes les commandes seront empilées les unes sur les autres, car c'est le comportement d'un Canvas