Comment obtenir un Datagrid WPF avec des cellules qui enveloppent le texte au lieu de le tronquer?

Que Faut-il faire pour obtenir une Datagrille WPF avec des cellules qui enveloppent le texte au lieu de le tronquer?

en ce moment, lorsqu'un texte est plus grand et ne rentre pas dans une colonne, le texte est tronqué et les utilisateurs ne peuvent pas voir sa valeur car la propriété IsReadOnly de DataGrid est true. Ce que je veux, c'est que le texte dans les cellules soit enveloppé et la hauteur de la cellule (pas de largeur de la cellule) a augmenté la quantité nécessaire pour montrer tout le texte.

33
demandé sur wonea 2011-01-12 20:24:20

3 réponses

Vous pouvez essayer de modeler les cellules avec un TextBlock qui a le text-wrapping activé.

8
répondu H.B. 2011-01-12 17:38:10

Merci pour votre aide @H. B., cela a fonctionné pour moi (alignement est facultatif):

<DataGrid.Columns>               
    <DataGridTextColumn Header="Wrapped & centered" Binding="{Binding field}">
        <DataGridTextColumn.ElementStyle>
             <Style>                            
                 <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
                 <Setter Property="TextBlock.TextAlignment" Value="Center"/>
             </Style>
         </DataGridTextColumn.ElementStyle>
    </DataGridTextColumn>
</DataGrid.Columns>
75
répondu D.Rosado 2018-07-12 10:12:26

j'ai fait quelque chose de similaire à la solution de D. Rosados. Le mien est cependant réutilisable si vous avez plus de colonnes qui ont besoin d'emballage.

<UserControl.Resources>
    <Style TargetType="{x:Type TextBlock}" x:Key="WrapText">
        <Setter Property="TextWrapping" Value="Wrap"/>
    </Style>
</UserControl.Resources>

<DataGrid.Columns>
    <DataGridTextColumn IsReadOnly="False" Header="Address" 
     Binding="{Binding Address}" ElementStyle="{StaticResource WrapText}" Width="150"/>
</DataGrid.Columns>
13
répondu Rahbek 2017-05-31 12:54:29