2011-01-16 4 views
1

Ich habe ein GUI-System implementiert, das stark vom WPF-Measure- und Arrange-Layout-System für ein Spiel inspiriert wurde. Obwohl es mit DockPanels und StackPanels funktioniert, musste ich vor kurzem WrapPanels verwenden. Ich habe festgestellt, dass mein GUI-System im aktuellen Zustand das Wrapping nicht unterstützen kann, da ich die maximal verfügbare Größe basierend auf den Vorfahren kennen müsste und meine Messung derzeit ohne diese Informationen durchgeführt wird.Wie funktioniert die Größenbeschränkung von WPF?

Ich habe die WPF-Dokumentation überprüft und festgestellt, dass ihre Measure Methode eine Größenbeschränkung als Parameter verwendet: Size Measure(Size availableSize). Das verwirrt mich. Nach meinem Verständnis führt WPF zuerst Messungen von den Blättern zur Wurzel und dann die Anordnung von der Wurzel zu den Blättern durch. In diesem Fall wird jedoch die verfügbare Größe der Vorfahren in der Messphase benötigt. Dies scheint mir widersprüchlich zu sein, da die Größe der Vorfahren von der Größe ihrer Nachkommen abhängt.

Wie liefert WPF diesen availableSize Wert im Messdurchgang?

Antwort

2

Ich denke, Ihr Verständnis re Messung ist falsch - es tritt von der Wurzel zu Blättern statt Blätter zu root. In der Tat ist es die Verantwortung der Elternkontrolle, die Kinder während ihres eigenen Passes auf die Nummer Measure() zu rufen. Somit kann der Elternteil herausfinden, wie viel Platz für seine Kinder verfügbar ist, und er kann diesen bei der Messung weitergeben.

+0

Das macht Sinn :) – Trillian

Verwandte Themen