In meinem Programm habe ich ein WrapPanel innerhalb einer Viewbox. Das WrapPanel (das eigentlich die ItemsPanelTemplate eines ItemsControl ist) enthält einige gebundene Elemente, die alle unterschiedliche Größen haben können.WPF-WrapPanel In einer ViewBox maximale Größe
<Viewbox Name="ViewWindow" Margin="10">
<Grid>
<ItemsControl ItemsSource="{Binding Path=Items}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical" MaxHeight="600"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
Ziel all dessen ist, dass ich für alle Elemente möchten auf einem einzigen Bildschirm passen dimensionieren. Die Viewbox bewältigt dies, indem sie den Inhalt so vergrößert, dass sie alle passen. Jedes Element im WrapPanel ist ein benutzerdefinierter Text und kann daher alle unterschiedlich groß sein. Was ich mit dem WrapPanel erreichen möchte, ist, dass der resultierende Text auf dem Bildschirm so groß wie möglich ist. Ich habe das getan, indem ich das WrapPanel MaxHeight so eingestellt habe, dass die Elemente in mehr Spalten eingeschlossen werden, wenn sie zu groß sind, aber das ist eine Art Hacky-Methode, und ich finde für verschiedene Gruppen von Elementen die MaxHeight anders.
Als Beispiel für das, was ich damit meine, stellen Sie sich vor, dass die Items, an die ItemsControl gebunden ist, einfach jeden Buchstaben im Alphabet anzeigt. Ohne irgendeine Möglichkeit, die Elemente auf mehrere Spalten umbrechen zu lassen, würden Sie eine wirklich große Spalte mit wirklich kleinem Text erhalten, aber wenn wir die MaxHeight des WrapPanels setzen, können wir die Elemente auf mehrere Spalten wie diese und den Text setzen auf dem Bildschirm größer sein:
A F K P U Z
B G L Q V
C H M R W
D I N S X
E J O T Y
Gehe ich das alles falsch? Gibt es eine bessere Kontrolle als WrapPanel? Muss ich eine Art benutzerdefiniertes Panel erstellen, um zu bekommen, was ich will?
Vielen Dank für jede Hilfe, die Sie
bearbeiten bieten:
Ein Beispiel dafür, warum ein Uniform nicht funktionieren würde, nehme ich diese 5 Elemente hatte (mit jedem Buchstaben ein anderes Element darstellt)
A C E
A C E
A D E
B D E
Mit einem Uniform alle Einzelteile würden die Größe des Elements E nehmen und es würde viel mehr Platz auf dem Bildschirm alle in Anspruch nehmen.
Wie wäre es mit einem UniformGrid als ItemsPanel? Ich denke * fügt Zeilen und Spalten hinzu, wenn Sie Elemente hinzufügen. –
Sie können dies nicht auf eine einfache Weise tun. Wenn sich ein Wrap-Panel in einer Viewbox befindet, muss es nie umbrochen werden, da die Viewbox es verkleinert. – Phil