1. ホーム
  2. wpf

[解決済み] WPF ListBoxでTextBlockを強制的に折り返す

2023-01-25 19:07:40

質問

メッセージを表示するWPFのリストボックスがあります。左側にアバターがあり、アバターの右側にユーザー名とメッセージが垂直に積み重なっています。レイアウトは、メッセージのテキストがワードラップされるまでは正常ですが、代わりにリストボックス上に水平スクロール バーが表示されます。

ググって同様の問題に対する解決策を見つけましたが、どれもうまくいきませんでした。

<ListBox HorizontalContentAlignment="Stretch"  ItemsSource="{Binding Path=FriendsTimeline}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Border BorderBrush="DarkBlue" BorderThickness="3" CornerRadius="2" Margin="3" >
                    <Image Height="32" Width="32"  Source="{Binding Path=User.ProfileImageUrl}"/>
                </Border>
                <StackPanel Orientation="Vertical">
                    <TextBlock Text="{Binding Path=User.UserName}"/>
                    <TextBlock Text="{Binding Path=Text}" TextWrapping="WrapWithOverflow"/> <!-- This is the textblock I'm having issues with. -->
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

どのように解決するのですか?

の内容は TextBlock の内容をラップするには、プロパティ TextWrapping . 代わりに StackPanel の代わりに DockPanel / Grid . もうひとつは ScrollViewer.HorizontalScrollBarVisibility プロパティに Disabled の値を ListBox .

更新 HiddenDisabled に変更しました。Mattに感謝します。