7 Stimmen

Wie kann ein Listenelement horizontal gestreckt werden?

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?

14voto

arconaut Punkte 3157

ListBox hat eine Eigenschaft namens HorizontalContentAlignment . Ich denke, die Einstellung auf Stretch reicht aus. Obwohl, wenn Sie die ListBox und/oder ändern seine ItemContainerStyle sicherstellen, dass der Wert dieser Eigenschaft bei Bedarf angewendet wird (über TemplateBinding s).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X