私はこのようなものを持っています:
<ListBox ItemsSource="{Binding List}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Property}" TextWrapping="Wrap" Grid.Column="0"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
そして、私が抱えている問題は、テキストが長すぎると、期待どおりにラップするのではなく、TextBlock がグリッド列 (およびリストボックス) を展開することです。グリッドのスターサイズの概念を完全には理解していないかもしれませんが、列幅が「1 *」に設定されているため、「利用可能な残りのスペース」を意味するため、テキストブロックはそれを超えて拡張しようとしないでください。代わりにテキストを折り返す必要があります。
では、どうすればこの問題を解決できますか? ところで、Textblock 以外にも他のコンポーネントがあるため、Grid (またはその他のコンテナー) が必要です。また、Listbox 要素がスペース全体を占めるように、ItemContainerStyle セクションもあります。
前もって感謝します!