Scrollviewer - & Leinwand
Ich versuche, ein Bild zu laden, die innerhalb einer Leinwand, so dass, wenn die Größe des Bildes überläufe der Leinwand, der scroll-Balken bekommen sollte aktiviert (MS Paint-Stil)
<Window>
<ScrollViewer>
<Canvas ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<Image Source="SampleImage.jpg" />
</Canvas>
</ScrollViewer>
</Window>
- Jetzt als
Canvas
gedehnt istWindow
's Größe, scroll-Balken erscheinen nicht alsCanvas
ist nicht wirklich überlaufen aus derWindow
. - Zweitens, wie die
Image
ist viel größer als dieCanvas
ist, wird es immer abgeschnitten, bei der die Grenzen derCanvas
, soScrollViewer
nicht denken, dass Ihr Inhalt:Canvas
ist tatsächlich überfüllt.
Es passiert eine Menge Zeit mit StackPanel
s auch, dass, obwohl die gebundenen Daten hat zig Zeilen, aber immer noch die scrollbars nicht aktiviert. Manchmal scrollviewers erscheinen als Geheimnis für mich.
Also, was soll die grundlegende Logik im Auge behalten, wenn mit ScrollViewer
Kontrolle.
Danke.
Edit: Nur bearbeitet die Frage, die Titel, so daß, wer problem hat mit der Leinwand kann diese Frage ganz leicht in der Suche.
- Entfernen Sie die Leinwand und es sollte funktioniert
- Ja, aber warum nicht mit der Leinwand. Was ist, wenn das Bild ist nicht nur die Kontrolle der Fenster, die Sie haben können Menüs, Symbolleiste, Statusleiste etc. und damit sollte es haben, einen anderen container als einem
Window
. - siehe meine Antwort, warum nicht mit der Leinwand. Ersetzen Sie einfach die Leinwand mit Raster, wenn es mehr Elemente. Leinwand nur, wenn Sie dont sorgen sich, über seine Größe. Zum scrollen Zwecke müssen Sie wissen, canvas Größe. Es ist kein Geheimnis im ScrollViewer-Element 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der MSDN-Website:
Leinwand ist der einzige panel-element, das hat keine inhärente layout-Eigenschaften. Eine Leinwand hat die Standard-Eigenschaften Height und Width von null, es sei denn, es ist das Kind ein element, das automatisch die Größe Ihrer untergeordneten Elemente. Untergeordnete Elemente einer Leinwand sind nie angepasst, Sie sind nur positioniert, an Ihren vorgesehenen Koordinaten. Dies bietet Flexibilität für Situationen, in denen inhärente sizing-Einschränkungen oder-Ausrichtung nicht brauchte oder wollte. Für Fälle, in denen Sie möchten, untergeordnete Inhalte werden automatisch in der Größe angepasst und ausgerichtet werden, ist es normalerweise am besten verwenden Sie ein Grid-element.
Hovever, können Sie festlegen, Leinwand Höhe und Breite explizit:
Vielleicht einer von diese zwei Links könnten dir helfen: