9
votes

ScrollViewer ne fonctionne pas avec StackPanel

côté gauche de ma page J'ai un stackel vertical avec les éléments suivants:

  • 1 textblock
  • 1 StackPanel vertical avec plusieurs éléments qui remplissent l'espace disponible

    J'essaie de faire la deuxième StackPanel défilable avec un ScrollViewer élément mais sans succès. Si je définis une hauteur de ScrollViewer à une certaine valeur, cela fonctionne, mais je ne veux pas parce que je veux que cela remplisse tout espace vertical disponible.

    Je pense appliquer à appliquer la hauteur ScrollViewer dans le code lecture de la hauteur calculée de StackPanel, mais cette ne semble pas la bonne façon de le faire. J'ai essayé aussi de lier Hauteur et actuelleHeight à la propriété de la hauteur de StackPanel, mais sans résultat. xxx

    à côté de j'ai aussi Un espace disponible horizontal de remplissage de grille de grille et il a automatiquement une barre de défilement. Je ne l'ai pas défini et ça ne l'aile pas si nécessaire. Il est étrange que StackPanel ne se comporte pas comme je veux. Qu'est-ce que je fais mal?

    edit

    J'ai trouvé ce Donc, la question . Il s'agit de WPF et non WINRT mais c'est probablement le même problème. Il dit:

    Vous ne pouvez pas ne pas résoudre la hauteur de la stackpanel. Il est conçu pour se développer indéfiniment dans une direction. Je conseillerais d'utiliser un panneau différent

    J'ai changé mon stackpanel vers une grille (je ne voulais pas à cause de définitions de lignes depuis que je ne veux qu'une colonne) mais ScrollViewer ne fonctionne pas non plus.


5 commentaires

J'ai essayé le code que vous avez fourni, cela fonctionne bien. Pouvez-vous expliquer quel problème exactement vous rencontrez? Ou pouvez-vous fournir un code pour une page entière?


@Sach merci pour votre temps. Je me suis endormi, je me suis réveillé ce matin et j'ai réussi à le résoudre en changeant son élément parent (StackPanel vertical) avec une grille (mon code est plein de grilles maintenant ...)


@Sach dans ma question J'ai dit que j'avais une grille avec deux rangées, mais je me suis trompé, c'était un stackpanel, la réponse était dans ma question -.- Devrais-je modifier la question et y répondre ou le supprimer?


Vous pouvez toujours répondre à votre propre question, cela aidera une autre personne qui avait le même problème. :) Je pense que tu devrais faire ça. Je suis content que vous l'avez résolu par vous-même. :)


@Sach fait. Je ne sais toujours pas pourquoi cela fonctionne avec une grille comme le parent et non avec un stackpanel, donc il me sens que ce n'est pas la réponse. Merci quand même.


4 Réponses :


18
votes

Après une longue nuit de sommeil, je l'ai résolu en changeant le StackPanel parent à une grille . J'ai gardé le deuxième StackPanel à l'intérieur de l'élément ScrollViewer et ça marche.

Je ne sais pas pourquoi la vision de ScrollViewer ne fonctionne pas lorsque son parent est un stackpanel à la place d'une grille. Si quelqu'un sait pourquoi s'il vous plaît m'expliquer. Je n'ai pas voulu faire une grille avec une seule colonne et deux rangées parce que cela semble un but vertical StackPanel.

Même si je l'ai résolu sans savoir pourquoi, j'espère que cette question aide quelqu'un d'autre avec le même problème et que si vous lisez ceci et que vous pouvez expliquer ce problème, dites-moi s'il vous plaît ... j'aimerai savoir.


2 commentaires

Ici, une lumière sur le sujet Stackoverflow.com/Questtions/802821/...


Hauteur / largeur définie sur Auto Ne vous comportez pas avec les orientations StackPanel Vertical / Horizontal. Réglage manuellement largeur / hauteur fixe le problème (en tant que POC). C'est pourquoi il est beaucoup plus facile d'utiliser la grille.



3
votes

Le panneau de pile est un type de conteneur qui peut continuer à augmenter autant que des enfants que vous y ajouterez et fournit un espace égal pour chacun de ses enfants, de sorte que la notification de ScrollViewe nécessite une hauteur ici pour dire au parent de définir les limites de l'espace; Donc, il peut fonctionner dans sa zone assignée.

espère que cela aide.


1 commentaires

Ajout d'une propriété sur le parent stackpanel ferait le travail ScrollViewer travail?



0
votes

J'ai fait des travaux de mine en faisant la StackPanel un enfant de la vision de ScrollViewer et en définissant la hauteur de la StackPanel


0 commentaires

1
votes

Je viens de donner une maxheight à la vision de ScrollViewer. Je suppose que la vision de ScrollViewer doit savoir quelle est sa hauteur maximale afin de déterminer, quand montrer les barres de défilement, si vous les avez sur la visibilité automatique.
Je viens de l'essayer avec et sans maxheight pour la vision de ScrollViewer et elle n'a fonctionné qu'avec un attribut MaxHeight.
Si je devais harmoniser une supposition, je dirais que la grille connaît sa maxheight des attributs que vous avez définis, mais je ne suis pas sûr, c'est juste une supposition.


0 commentaires