【问题标题】:Horizontal ListBox with HorizontalContentAlignment=StretchHorizo​​ntalContentAlignment=Stretch 的水平列表框
【发布时间】:2013-02-26 09:18:41
【问题描述】:

我有一个带有 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>

这是我得到的:

我想要的如下:

【问题讨论】:

    标签: windows-phone-7 windows-phone-7.1


    【解决方案1】:

    尝试以下方法:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

        • 它不能在 WIndowsPhone 中工作(根据 OP,这是目标平台)。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多