0

我试图在使用 WrapPanel 和 Orientation="Horizo​​ntal" 时拉伸 ListBoxItems:

<ListBox HorizontalContentAlignment="Stretch" ItemsSource="{Binding SomeCollection}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Border>
                <!--Some Textboxes and Labels-->
            </Border>
        </DataTemplate>
    </ListBox.ItemTemplate>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>

如果我不使用 WrapPanel,它将扩展 ListBoxItems 以匹配 ListBox 的大小。当我使用 WrapPanel 时,ListBoxItems 具有最小宽度。

简要地:

我有一个列表,其中包含两个水平方向的 ListBoxItems:

包含两个项目的列表

当我展开主窗口时,ListBox 也会展开,因为我有 Horizo​​ntalAlignment="Stretch" 但 ListBoxItems 不会。 在此处输入图像描述

所以我想要的是 ListBoxItems 与 ListBox 一起扩展,如下例所示:

展开窗口后的相同列表

对于这种情况,除了 ListBox 之外,还有更好的控件吗?如果这还不够清楚,请告诉我。谢谢您的帮助。

4

2 回答 2

2

您不能使用水平环绕面板,也不能期望元素水平拉伸,这是逻辑上的利益矛盾。实际上,如果您想要任何类型的拉伸,aWrapPanel可能不是正确的面板。

如果您希望它们占用相等的空间,而整体占用所有水平空间,则使用 a UniformGrid(设置Rows为一个)。

于 2012-07-17T17:52:54.060 回答
0

您应该能够像这样使用UniformGrida ItemsPanel

<ListBox HorizontalContentAlignment="Stretch" ItemsSource="{Binding SomeCollection}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Border>
                <!--Some Textboxes and Labels-->
            </Border>
        </DataTemplate>
    </ListBox.ItemTemplate>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Rows="1" Columns="2" />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>
于 2012-07-17T22:23:37.690 回答