将按钮放在ListBox中,它将拉伸到它的宽度

时间:2010-06-11 16:07:06

标签: .net wpf

我想创建按钮列表,我希望按钮遍布列表项空间。这就是我所拥有的:

    <ListBox Margin="44,54,134,0" Name="listView1" Height="64" >
        <Button Height="20"></Button>
        <Button Height="20"></Button>            
    </ListBox>

结果是:

alt text http://img251.imageshack.us/img251/4050/samplec.png

第一张图片

我想要第二张图片,但按钮的右侧粘在列表的右侧。我试图将ItemTemplate绑定到ListBox宽度,但这并不适用于所有情况(如果width是Auto)

谢谢, 安德烈

2 个答案:

答案 0 :(得分:2)

<ListBox Margin="44,54,134,0" Name="listView1" Height="64" HorizontalContentAlignment="Stretch">
    <Button Height="20"></Button>
    <Button Height="20"></Button>
</ListBox>
来自Andrey的

编辑

如果您希望此解决方案完美添加以下这些内容:

        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}">
                <Setter Property="Padding" Value="0"></Setter>
            </Style>
        </ListBox.ItemContainerStyle>

他们将删除左边令人讨厌的差距,这使得列表不对称

答案 1 :(得分:0)

这是我如何设法解决这个问题。这更灵活,但这对于这么简单的任务来说确实是开销

    <ListBox ItemsSource="{Binding}">
        <ListBox.ItemContainerStyle>
            <Style TargetType="{x:Type ListBoxItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ListBoxItem}">
                            <Grid>
                                <Button Height="20">
                                    <ContentPresenter></ContentPresenter>
                                </Button>
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ListBox.ItemContainerStyle>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}"></TextBlock>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>