2009-02-05 15 views
2

Je veux dire, j'ai un de ces contrôles et du texte dans une de ses colonnes. Généralement, si l'utilisateur modifie la taille de la colonne, il ne fait que couper du texte. Si j'essaie d'utiliser un template avec textblock ou textbox et que je place TextWrapping = "Wrap" dans le template - ça ne change rien du tout. Quelle est la sortie?Comment faire fonctionner un ListView (ou DataGrid) avec TextWrapping (WPF)

* Et oui, j'ai cherché avant de demander, et j'ai trouvé des questions similaires sur ce site. Mais sans réponse (((*


Andy, thx pour la réponse, bien que je suis moi-même pensait qu'il devrait agir de cette façon. Je ckecked votre variante simple et il fonctionne. Bien que j'ai un exemple similaire La seule différence était que dans le modèle j'ai utilisé mon UserControl qui a TextBlock et d'autres contrôles à l'intérieur du StackPanel dans sa propriété de contenu et après une heure d'expérimentation avec Width, HorizontalAlignment et ainsi de suite dans différentes parties du code Je comprends, je ne peux rien faire Et puis - je viens de changer StackPanel avec Grid Et - alto - ça marche Je ne sais pas si c'est un bug ou juste une réaction spécifique de StackPanel (en fait j'ai vérifié les paramètres en cours d'exécution - et c'était très étrange: Actu alWidth était plus que le DesiredSize et la largeur réelle du Panel). Donc si quelqu'un pouvait me dire - pourquoi est-ce ainsi? - Ce serait intéressant. Si non - je vais juste utiliser la version avec Grid.

Répondre

4

Ce qui suit a fonctionné pour moi:

<ListView ItemsSource="{Binding Source={StaticResource MyItems}}"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Width="50" Header="Column 1"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate x:Name="col1Template"> 
         <TextBlock TextWrapping="WrapWithOverflow" Text="{Binding Path=Column1Text}" /> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
      ... 
     </GridView> 
    </ListView.View> 
</ListView> 

Cela a provoqué le texte dans la première colonne pour envelopper sur plusieurs lignes si la largeur de la colonne était pas assez large pour afficher tout le texte.

1

Assurez-vous que DataGrid n'a pas défini RowHeight ou qu'il va remplacer la hauteur "true" du bloc de texte après qu'il a été enveloppé de texte.