ゴール
私はDataGrid
内のテキストが含まれているWPFアプリケーションを持っています。 テキストを各セル内で折り返したい。 また、各列にMinWidthを設定する必要がある場合は、ScrollViewer
にhorizonatlスクロールバーを作成する必要があります。 セルのいずれか、またはDataGrid
自体に水平スクロールバーを表示することは決してありません。 ユーザーがウィンドウのサイズを変更した場合、テキストの折り返しに対応するために行が拡大または縮小される必要がありますが、列が読み込めなくなるほど薄くなってはいけません。それはScrollViewerの中にあるので、TextWrapping
今
問題
、テキストは折り返されません。 私は、このサンプルを変更してテキストを折り返す方法があると知っていますが、上記のように、それが必要な方法で正確に動作するようにはできません。あなたはscrollViewr(DataGrid内にすでに存在)が表示されるように...あなたは、データグリッドのMaxWidthプロパティ/ Maxheighjtを設定する必要がありますScrollViewerの中でデータグリッドを配置する必要がいけない簡体XAML
<Window x:Class="SampleApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SampleApp"
Title="App" Height="350" Width="525">
<Window.Resources>
<Style x:Key="WrappingTextBlock" TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
<Style x:Key="WrappingTextBox" TargetType="TextBox">
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Stuff ... />
<MoreStuff ... />
<Border Grid.Row="1" Grid.Column="1">
<ScrollViewer>
<StackPanel>
<DataGrid HorizontalAlignment="Left" ItemsSource="{Binding AwesomeObject, Mode=TwoWay}" Margin="5" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="#" Binding="{Binding Number, Mode=TwoWay}"/>
<DataGridTextColumn Header="Header" Binding="{Binding Data, Mode=TwoWay}"/>
<DataGridTextColumn MinWidth="50" Header="Long Text" Binding="{Binding SoMuchText, Mode=TwoWay}" ElementStyle="{StaticResource WrappingTextBlock}" EditingElementStyle="{StaticResource WrappingTextBox}"/>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</ScrollViewer>
</Border>
</Grid>
</Window>