2

ListBox 内の ListBoxItems を同じ高さにするにはどうすればよいですか?

<ListBox
    HorizontalContentAlignment="Stretch"
    ScrollViewer.HorizontalScrollBarVisibility="Disabled"
    >
    <ListBoxItem><TextBlock TextWrapping="Wrap">Long text that would wrap and increase height of single ListBoxItem</TextBlock></ListBoxItem>
    <ListBoxItem><TextBlock TextWrapping="Wrap">Short text</TextBlock></ListBoxItem>
    <ListBoxItem><TextBlock TextWrapping="Wrap">Short text</TextBlock></ListBoxItem>
</ListBox>

「短いテキスト」のアイテムを最初のアイテムと同じ高さにしたいです(通常、折り返しのために行が増えます)。

4

2 に答える 2

2

ここで少しごまかしていますが、これを試してください:

<ListBox.ItemsPanel>
    <ItemsPanelTemplate>
        <UniformGrid Rows="{Binding Path=Items.Count, RelativeSource={RelativeSource AncestorType=ListBox}}" VerticalAlignment="Top"/>
    </ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBoxItem>
    <TextBlock TextWrapping="Wrap">Long text that would wrap and increase height of single ListBoxItem</TextBlock>
</ListBoxItem>
<ListBoxItem>
    <TextBlock TextWrapping="Wrap">Short text</TextBlock>
</ListBoxItem>
<ListBoxItem>
    <TextBlock TextWrapping="Wrap">Short text</TextBlock>
</ListBoxItem>

于 2012-10-22T00:52:01.167 に答える
0

これは、コード ビハインドのプロパティにアイテムをバインドすることで実行できると思いますHeight(私は を使用することを好みますDataTemplate)。これを MaxHeight と呼び、アイテムをループして最大値ActualHeightを取得し、最後に MaxHeight プロパティに設定します。
それが役に立てば幸い

編集:XAML

<ListBox HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding Things}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock TextWrapping="Wrap" Height="{Binding DataContext.MaxHeight,RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}}}" Text="{Binding ThingName}"></TextBlock>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
于 2012-10-21T14:28:53.667 に答える