Ist es möglich, die Breite aller TextBlocks im WrapPanel auf die Größe des größten TextBlocks innerhalb des WrapPanel anzupassen? Das Endergebnis sollte sein, dass die Breite des Steuerelements, das "einige Daten" enthält, dieselbe Breite wie das Steuerelement hat, das "noch mehr Daten als zuvor" enthält. Ich habe meinen anfänglichen Code als Ausgangspunkt verwendet. Ich habe Strings als Beispiel verwendet, aber die Sammlungsdaten und die Vorlage könnten alles sein, so dass ich mich nicht auf die Länge der Zeichenkette verlassen kann.WPF: Synchronisieren Sie die Breite aller Elemente in ItemsControl
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:System="clr-namespace:System;assembly=mscorlib"
xmlns:Collections="clr-namespace:System.Collections;assembly=mscorlib"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Collections:ArrayList x:Key="data">
<System:String>Some data</System:String>
<System:String>Some more data</System:String>
<System:String>Even more data than before</System:String>
</Collections:ArrayList>
</Window.Resources>
<ItemsControl ItemsSource="{StaticResource data}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel></WrapPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Margin="5" BorderThickness="1" BorderBrush="Black">
<TextBlock Text="{Binding}"></TextBlock>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Window>
Und ein Bild des gewünschten Ausgangs:
Ziemlich elegante Lösung. Dies löst mein unmittelbares Problem recht gut, ohne dass ich irgendeinen benutzerdefinierten Code schreiben muss. Gibt es irgendwelche Einschränkungen, die bei dieser Antwort sofort in den Sinn kommen? – mortalapeman