1

我有一个带有 3 个可绑定项目的水平列表框。如何将它们拉伸到列表框的所有宽度?例如第一个元素在左边,第二个元素在中间,第三个元素在右边。现在我将它们与边距对齐,但我很感兴趣,是否有可能没有边距?我试图将 ListBox 属性 Horizo​​ntalContentAlignment 设置为 Stretch,但没有得到我想要的。

谢谢。


我尝试了您的建议,但不幸的是没有得到理想的结果。我的 XAML 在这里:

        <ListBox>
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <VirtualizingStackPanel Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                </Style>
            </ListBox.ItemContainerStyle>
            <ListBoxItem Content="1"/>
            <ListBoxItem Content="2"/>
            <ListBoxItem Content="3"/>
        </ListBox>

这是我得到的:

在此处输入图像描述

我想要的是下面:

在此处输入图像描述

4

3 回答 3

2

Try with following approach:

    <ListBox Grid.Row="1">
            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
                </Style>
            </ListBox.ItemContainerStyle>
            <ListBoxItem  HorizontalAlignment="Stretch">
            <Grid>
                <TextBlock  Text="1"   HorizontalAlignment="Left"/>
                <TextBlock  Text="2"   HorizontalAlignment="Center"/>
                <TextBlock  Text="3"   HorizontalAlignment="Right"/>
            </Grid>
        </ListBoxItem>
    </ListBox>
于 2013-02-27T13:09:51.370 回答
0

这是一个棘手的问题 :) 为此,您需要更改 ListBox.ItemContainerStyle,查看MSDN 论坛上的答案。此外,请查看本网站上的以下链接:

于 2013-02-26T10:03:22.240 回答
0

我不确定您是否找到了解决方案,但这对我来说可以使项目均匀分布:

<ListBox>               
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Rows="1"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>

    <ListBoxItem Content="Item1"/>
    <ListBoxItem Content="Item2"/>
    <ListBoxItem Content="Item3"/>
</ListBox>

位于:https ://stackoverflow.com/a/1270813/124721

然后在 ItemContainerStyle 中混合,我可以让内容居中:

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
        <Setter Property="HorizontalAlignment" Value="Stretch"/>
    </Style>
</ListBox.ItemContainerStyle>

但是,我仍然无法将一个项目对齐到左侧,然后将另一个对齐到中心,最后一个对齐到右侧。直接将对齐应用于项目会缩小面板尺寸。但也许如果它被包裹在另一个容器中,比如可以工作的堆栈面板。

于 2013-03-15T01:31:21.987 回答