Как сделать элемент списка горизонтально растянутым? - PullRequest
7 голосов
/ 13 февраля 2010

Вот окно с простым списком:

image

Код прост:

<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>

Ширина каждого элемента разная. Похоже на "Авто". Я пробовал разные способы, но не нашел способа, позволяющего растягивать элементы по горизонтали без жесткого определения ширины.

Как мне?

1 Ответ

14 голосов
/ 14 февраля 2010

ListBox имеет свойство с именем HorizontalContentAlignment. Я думаю, что установка его на Stretch поможет. Хотя, если вы измените шаблон ListBox и / или измените его ItemContainerStyle, убедитесь, что значение этого свойства применяется в случае необходимости (через TemplateBinding s).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...