ScrollViewer funktioniert nicht mit StackPanel

8

Links von meiner Seite Ich habe ein vertikales StackPanel mit den folgenden Elementen:

  • 1 Textblock
  • 1 vertikales StackPanel mit mehreren Elementen, die den verfügbaren Platz ausfüllen

Ich versuche, das zweite StackPanel scrollbar mit einem ScrollViewer -Element zu erstellen, aber ohne Erfolg. Wenn ich ScrollViewer Height auf einen Wert festlege, funktioniert es, aber ich will es nicht, weil ich möchte, dass es den gesamten verfügbaren vertikalen Platz ausfüllt.

Ich denke, ScrollViewer Height in Code zu verwenden, der StackPanel-berechnete Höhe liest, aber das scheint nicht der richtige Weg zu sein. Ich habe auch versucht, Height und ActualHeight an die Eigenschaft StackPanel Height zu binden, aber ohne Ergebnisse.

%Vor%

Neben habe ich auch ein GridView, das horizontal verfügbaren Platz füllt und es hat automatisch eine Bildlaufleiste. Ich habe es nicht definiert und es erscheint, wenn es nötig ist. Es ist seltsam, dass sich StackPanel nicht so verhält, wie ich es möchte. Was mache ich falsch?

BEARBEITEN

Ich fand das SO Frage . Es geht um WPF und nicht WinRT, aber wahrscheinlich ist es das gleiche Problem. Es sagt:

  

Das geht nicht, ohne die Höhe des StackPanels festzulegen. Es ist so konzipiert, dass es unbegrenzt in eine Richtung wachsen kann. Ich würde empfehlen, ein anderes Panel zu verwenden

Ich habe mein StackPanel in ein Grid geändert (das wollte ich wegen der Zeilen-Definitionen nicht, da ich nur eine Spalte haben möchte), aber ScrollViewer funktioniert auch nicht.

    
letiagoalves 10.03.2013, 00:41
quelle

4 Antworten

16

Nachdem ich lange geschlafen habe, habe ich es gelöst, indem ich den übergeordneten StackPanel in ein Grid geändert habe. Ich habe das zweite StackPanel im ScrollViewer-Element gespeichert und es funktioniert.

Ich weiß nicht, warum der ScrollViewer nicht funktioniert, wenn sein Elternteil ein StackPanel statt eines Grids ist. Wenn jemand weiß warum, bitte erkläre es mir. Ich wollte kein Grid mit nur einer Spalte und zwei Zeilen erstellen, weil das vertikale StackPanel-Zweck scheint.

Obwohl ich es gelöst habe, ohne zu wissen warum, hoffe ich, dass diese Frage jemand anderem mit dem gleichen Problem hilft und wenn Sie dies lesen und dieses Problem erklären können, sagen Sie mir bitte ... Ich werde es gerne wissen.

    
letiagoalves 10.03.2013, 16:05
quelle
3

Stack-Panel ist ein Containertyp, der so viele Kinder wie möglich hinzufügen kann und für jeden seiner untergeordneten Elemente den gleichen Platz bietet. Der scrollviewer benötigt hier also eine Höhe, um dem Elternteil zu sagen, dass er die Space-Limits definieren soll; damit es in seinem zugewiesenen Bereich funktionieren kann.

hoffe das hilft.

    
Kundan Vuppala 22.01.2014 18:52
quelle
1

Ich habe dem ScrollViewer gerade eine MaxHeight gegeben. Ich nehme an, dass der ScrollViewer wissen muss, wie groß die maximale Höhe ist, um herauszufinden, wann die Bildlaufleisten angezeigt werden sollen, wenn sie automatisch angezeigt werden.
Ich habe es einfach mit und ohne MaxHeight für den ScrollViewer probiert und es funktionierte nur mit einem MaxHeight-Attribut.
Wenn ich eine Vermutung riskieren müsste, würde ich sagen, dass das Grid seine MaxHeight von den Attributen kennt, die Sie festgelegt haben, aber ich bin mir nicht sicher, es ist nur eine Vermutung.

    
Boldi 24.08.2016 23:14
quelle
0

Ich habe meins gemacht, indem ich das StackPanel zu einem Kind des ScrollViewer gemacht habe und die Höhe des StackPanels

eingestellt habe     
anagpuyol 10.11.2015 18:21
quelle