Hier ist ein Fenster mit einer einfachen Liste:
Der Code ist einfach zu verstehen:
<Window x:Class="Wpf_List.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border BorderBrush="Black" BorderThickness="2" Grid.Column="1">
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<!--HorizontalAlignment="Stretch" below has no effect :(-->
<Border CornerRadius="5" BorderBrush="DarkRed" SnapsToDevicePixels="True" BorderThickness="1"
Margin="1" Padding="4,2"
HorizontalAlignment="Stretch"
>
<TextBlock Text="{Binding}"/>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
<sys:String>First</sys:String>
<sys:String>Second</sys:String>
<sys:String>Some item with a long name</sys:String>
</ListBox>
</Border>
</Grid>
</Window>
Die Breite der einzelnen Artikel ist unterschiedlich. Sieht aus wie "Auto". Ich habe verschiedene Möglichkeiten ausprobiert, aber keine gefunden, um die Elemente horizontal zu strecken, ohne die Breite hart zu kodieren.
Wie kann ich das tun?