かなり長いテキスト値を表す 1 つの列でデータ グリッドを作成したいと考えています。だから私の目標機能は次のとおりです。
- 残りのウィンドウ スペースと同じ幅の列幅 (ウィンドウのサイズは変更可能)
- 必要に応じてテキストを折り返します
- データ グリッドの高さをウィンドウの残りの高さに制限し、必要に応じて垂直スクロールを提供する
次のコードは最初の 2 つの項目を満たし、機能する垂直スクロール バーを提供しますが、表示されているコンテンツに対してデータ グリッドの高さが奇妙に高すぎます。テキストブロックからワードラップを削除すると、これが修正されます...しかし、ワードラップが必要です。
データ グリッドの高さが過度に高くなることなく、ワード ラップ機能を維持するにはどうすればよいですか?
<ScrollViewer VerticalScrollBarVisibility="Auto">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- other controls in different parts of the data grid -->
<DataGrid Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left"
Margin="0,6,6,6" Name="dgMessages" VerticalAlignment="Top"
Background="DarkGray" HeadersVisibility="None"
AlternatingRowBackground="Gainsboro" CanUserResizeColumns="False"
CanUserResizeRows="False" CanUserSortColumns="False"
AutoGenerateColumns="false" BorderBrush="Black" HorizontalGridLinesBrush="{x:Null}"
ItemsSource="{Binding Messages, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
<DataGrid.Columns>
<dg:DataGridTemplateColumn Width="*">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value}"
TextWrapping="WrapWithOverflow"
Padding="5,5,5,5" />
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</ScrollViewer>
「dg」名前空間は「http://schemas.microsoft.com/winfx/2006/xaml/presentation」です