如何使列表项水平拉伸?

时间:2010-02-13 20:55:15

标签: wpf listbox

这是一个带有简单列表的窗口:

代码很简单:

<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 个答案:

答案 0 :(得分:14)

ListBox有一个名为HorizontalContentAlignment的媒体资源。我认为将它设置为Stretch就可以了。 虽然如果您重新模板ListBox和/或更改其ItemContainerStyle,请确保在必要时(通过TemplateBinding s)应用此属性的值。