首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >水平ListBox与HorizontalContentAlignment=Stretch

水平ListBox与HorizontalContentAlignment=Stretch
EN

Stack Overflow用户
提问于 2013-02-26 09:18:41
回答 3查看 1.7K关注 0票数 1

我有一个水平的列表箱与3个可装订的项目。我怎样才能把它们伸展到列表框的所有宽度?例如,第一个元素在左边,第二个元素在中间,第三个元素在右边。现在我把它们与边距对齐,但我很感兴趣,有没有可能没有边距?我试图将ListBox property HorizontalContentAlignment设置为,但没有得到我想要的。

谢谢。

我尝试过你的建议,但不幸的是没有得到理想的结果。我的XAML:

代码语言:javascript
复制
        <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>

我得到的是:

我想要的是:

EN

回答 3

Stack Overflow用户

发布于 2013-02-27 13:09:51

尝试采用以下方法:

代码语言:javascript
复制
    <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
EN

Stack Overflow用户

发布于 2013-02-26 10:03:22

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

票数 0
EN

Stack Overflow用户

发布于 2013-03-15 01:31:21

我不确定你是否找到了一个解决方案,但这对我来说是有效的,使项目的间隔均匀:

代码语言:javascript
复制
<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中进行混合,我可以以内容为中心:

代码语言:javascript
复制
<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
        <Setter Property="HorizontalAlignment" Value="Stretch"/>
    </Style>
</ListBox.ItemContainerStyle>

然而,我仍然无法得到一个项目对齐左,然后另一个到中心,最后一个到右边。直接应用对项的对齐方式会缩小面板的大小。但是,如果它被包装在另一个容器中,就像一个堆栈面板那样可以工作的话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15085291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档