ScrollViewer-Element funktioniert nicht mit StackPanel
Linken Seite meiner Seite habe ich eine vertikale StackPanel-Element mit den folgenden Elementen:
- 1 TextBlock
- 1 vertikale StackPanel-Element mit mehreren Elementen, füllt den verfügbaren Raum
Ich versuche, die zweite StackPanel-Steuerelement Scrollbar mit einem ScrollViewer element, aber ohne Erfolg. Wenn ich definieren ScrollViewer-Höhe auf einen Wert es funktioniert, aber ich will nicht weil ich es will, zu füllen alle verfügbaren vertikalen Raum.
Ich bin am überlegen zu gelten ScrollViewer-Höhe in code-Lesung StackPanel berechnete Höhe aber dies scheint nicht der richtige Weg, es zu tun.
Ich versuchte auch zu binden Höhe und ActualHeight zu StackPanel Height-Eigenschaft, aber keine Ergebnisse.
<ScrollViewer
Grid.Row="1"
VerticalAlignment="Top"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollMode="Enabled"
ScrollViewer.HorizontalScrollMode="Disabled"
ScrollViewer.ZoomMode="Disabled">
<StackPanel x:Name="sptest" Orientation="Vertical">
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test1</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test2</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test3</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test4</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test5</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test6</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test7</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test8</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test9</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test10</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test11</TextBlock>
<TextBlock Style="{StaticResource PageHeaderTextStyle}">test12</TextBlock>
</StackPanel>
</ScrollViewer>
Neben ich habe auch ein GridView-Füllung horizontal verfügbare Platz und es automatisch scrollbar. Ich habe nicht definiert, und es auftreten, wenn nötig. Es ist seltsam, dass StackPanel nicht so verhält, wie ich es will. Was mache ich falsch?
BEARBEITEN
Fand ich diese ALSO Frage. Es ist über WPF und nicht WinRT aber wahrscheinlich ist es das gleiche problem. Es sagt:
Können Sie nicht ohne die Festsetzung der Höhe des StackPanel-Steuerelement. Es ist entworfen, um zu wachsen, auf unbestimmte Zeit in eine Richtung. Ich würde raten, mit einem anderen Panel
Änderte ich meine StackPanel-Element auf einem Raster (ich wollte nicht, weil der Zeilen-Definitionen, da möchte ich nur eine Spalte), aber ScrollViewer-Element funktioniert auch nicht.
- Ich habe versucht, den code, den Sie zur Verfügung gestellt haben, funktioniert es einwandfrei. Können Sie erklären, was der genaue Punkt, den Sie haben? Oder können Sie code für die ganze Seite?
- Vielen Dank für Ihre Zeit. Ich ging schlafen, wachte auf an diesem morgen und konnte es lösen, durch das ändern des übergeordneten Elements (vertikale StackPanel-Steuerelement) mit einem Raster (mein code ist voll der Stromnetze jetzt...)
- In meiner Frage sagte ich, ich hätte ein Grid mit zwei Zeilen, aber ich irrte mich, es war ein StackPanel, das war die Antwort meiner Frage -.- Sollte ich Bearbeiten Sie die Frage und beantworten oder löschen?
- Sie können immer Ihre eigene Frage zu beantworten, es werde helfen, eine andere person, hatte dasselbe Problem. 🙂 Ich denke, Sie sollten das tun. Ich bin froh, dass Sie es gelöst, indem Sie sich. 🙂
- Getan. Ich weiß immer noch nicht, warum es arbeitet mit einem Raster, wie die Eltern-und nicht mit einem StackPanel-so fühlt es sich für mich, dass es nicht die Antwort. Trotzdem danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach einer langen Nacht schlafen, ich löste es, indem Sie die Eltern StackPanel zu einem Grid. Ich hielt die zweite StackPanel innen ScrollViewer-element, und es funktioniert.
Ich weiß nicht, warum das ScrollViewer-Element funktioniert nicht, wenn das übergeordnete Element ist ein StackPanel-Element statt eines Gitters. Wenn jemand weiß warum, bitte erklären Sie mir. Ich wollte nicht zu machen, ein Grid mit nur einer Spalte und zwei Zeilen, weil das scheint vertikalen StackPanel Zweck.
Obwohl ich es gelöst, ohne zu wissen warum, hoffe ich, dass diese Frage jemand hilft anderen mit dem gleichen Problem und wenn Sie dies Lesen, und Sie kann erklären, dieses Problem, Sag mir bitte... ich will es gerne wissen.
Stack-panel ist eine Art von container, die kann wachsen, wie viele Kinder Sie es hinzuzufügen und bietet gleich Platz für jedes Ihrer Kinder, So ist das scrollviewer-Element erfordert eine Höhe hier zu sagen, die Eltern zu definieren, die Raum begrenzt; so kann es-Funktion in der zugewiesenen Bereich.
hoffe, das hilft.
Height
Eigenschaft der übergeordnetenStackPanel
würde dieScrollViewer
Arbeit?Ich gab nur ein MaxHeight das ScrollViewer-Element. Ich denke, dass der ScrollViewer muss wissen, was Ihre maximale Höhe ist, um herauszufinden, Wann zeigen die scrollbars, wenn Sie Sie auf auto-Sichtbarkeit.
Ich habe es gerade ausprobiert mit und ohne MaxHeight für das ScrollViewer-Element, und es funktionierte nur mit einem MaxHeight-Attribut.
Wenn ich raten, würde ich sagen, dass das Netz weiß, MaxHeight aus den Attributen, die Sie gesetzt, aber ich bin nicht sicher, es ist nur eine Vermutung.
Ich machte mir die Arbeit, indem Sie das StackPanel-Element ein Kind des ScrollViewer-und Einstellung der Höhe des StackPanel