水平ListBox与Horizo​​ntalContentAlignment =拉伸

时间:2013-02-26 09:18:41

标签: windows-phone-7 windows-phone-7.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>

我得到的是:

enter image description here

我想要的是下面的内容:

enter image description here

3 个答案:

答案 0 :(得分:2)

尝试以下方法:

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

答案 1 :(得分:0)

这是一个棘手的问题:)要做到这一点,你需要更改ListBox.ItemContainerStyle,查看MSDN forum上的答案。 另外,请查看本网站上的以下链接:

答案 2 :(得分: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>

但是我仍然无法让一个项目与左边对齐,然后另一个项目与中心对齐,最后一个项目向右。直接将对齐应用于项目会缩小面板尺寸。但也许如果它被包装在另一个容器中,就像堆栈面板那样可以工作。