In den letzten paar Tagen habe ich versucht habe um das folgende Layout Textblocks, meinen Kopf zu wickeln:WPF - Komplexe TextBlock- Layout
-------------------- -----------
| 1 | | |
-------------------- | 3 |
| 2 | | |
----------------- -----------
Alle der Textblocks haben dynamische Breite. Sie haben eine feste Höhe und sind in einem festen Behälter. Sie müssen die folgenden Anforderungen erfüllen:
- 2 hat maximale Priorität - es muss immer in voller Länge sein.
- 3 den verbleibenden Raum füllen links nach 2.
Sizing Wenn TextBlock- 1 ignoriert, diese beiden Anforderungen, indem sie die beiden anderen Textblocks in einem Grid erfüllt werden konnten, mit Spalten auf „auto“ und " *" beziehungsweise.
Es gibt eine dritte Anforderung aber:
- 1 übernimmt alle Raum kann es, aber ohne Einschränkung 3.
Beispiele:
Lang Inhalt in Block 3 (Block 2 Inhalt ist voller Länge, Block 3 Inhalt wird getrimmt):
Kurzer Inhalt in Block 3 (beide Blöcke 2 und 3 sind voller Länge; Block 1 füllt den verbleibenden Platz aus):
--------------------- ---------
| 1 | | |
--------------------- | 3 |
| 2 | | |
----------------- ---------
Gibt es eine Möglichkeit, dieses Layout in WPF zu erreichen? Wie?
Danke für die Antwort. Es funktioniert jedoch nicht wie erwartet für das zweite Beispiel. Ich habe Ihren Code geändert, damit er funktioniert, der letzte 'else'-Zweig muss folgendermaßen geändert werden: 'InternalChildren [2] .Arrange (neues Rect (arraySize.Width - sizeLabel2.Width, 0, sizeLabel2.Width, sizeLabel2. Höhe)); InternalChildren [0] .Arrange (neues Rect (0, 0, arraySize.Width - sizeLabel2.Width, sizeLabel0.Height)); '. Wenn Sie Ihre Antwort ändern, werde ich sie akzeptieren. – Mastah
Ich bin froh, dass Sie die Idee haben und die Logik an Ihre Bedürfnisse anpassen können. Ich habe meine Antwort aktualisiert. – gomi42