web-dev-qa-db-fra.com

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

Que faut-il faire pour obtenir un DataFrid WPF avec des cellules qui encapsulent le texte au lieu de le tronquer?

À l'heure actuelle, lorsqu'un texte est plus grand et ne tient pas dans une colonne, le texte est tronqué et les utilisateurs ne peuvent pas voir sa valeur car la propriété IsReadOnly du DataGrid est vraie. Ce que je veux, c'est que le texte des cellules soit encapsulé et que la hauteur des cellules (PAS DE LARGEUR DE CELLULE) augmente la quantité nécessaire pour afficher tout le texte.

48
gsi-frank

Vous pouvez essayer de modéliser les cellules avec un TextBlock dont l'habillage de texte est activé.

13
H.B.

Merci pour votre aide @ H.B., cela a fait l'affaire pour moi (l'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>
95
D.Rosado

J'ai fait quelque chose de similaire à la solution D.Rosados. Le mien est cependant réutilisable si vous avez plus de colonnes qui doivent être encapsulées.

<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>
23
Rahbek

Une autre façon simple de définir l'habillage du texte pour les colonnes Editing et Text DataGrid consiste à spécifier la propriété Binding et la propriété TextWrapping comme suit:

<DataGridTemplateColumn x:Name="ColumnName" Header="Column Header Goes Here">
        <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                         <TextBox Text="{Binding Path=DataBoundProperty, Mode=TwoWay}" TextWrapping="Wrap"/>
                </DataTemplate>
        </DataGridTemplateColumn.CellEditingTemplate>
        <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=DataBoundProperty, Mode=OneWay}" TextWrapping="Wrap"/>
            </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
0
sheraz yousaf