Comment puis-je :
- aligner à droite le texte de la colonne ID
- faire en sorte que chacune des colonnes s'auto-dimensionne en fonction de la longueur du texte de la cellule dont les données visibles sont les plus longues ?
Voici le code :
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Id}" Width="40"/>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="100" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}"/>
</GridView>
</ListView.View>
</ListView>
réponse partielle :
Merci Kjetil, le GridViewColumn.CellTemplate fonctionne bien et la largeur automatique fonctionne bien sûr, mais lorsque l'ObservativeCollection "Collection" est mis à jour avec des données plus longues que la largeur de la colonne, les tailles des colonnes ne se mettent pas à jour elles-mêmes, donc c'est seulement une solution pour l'affichage initial des données :
<ListView Name="lstCustomers" ItemsSource="{Binding Path=Collection}">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" Width="Auto">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Id}" TextAlignment="Right" Width="40"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}" Width="Auto" />
<GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}" Width="Auto"/>
</GridView>
</ListView.View>
</ListView>
2 votes
Avez-vous trouvé une solution à votre problème de taille automatique ? Je rencontre le même problème.
2 votes
@Oskar - la virtualisation de la liste empêche une auto-solution. La liste ne connaît que les éléments actuellement visibles et définit la taille en conséquence. S'il y a d'autres éléments plus bas dans la liste, elle ne les connaît pas et ne peut donc pas en tenir compte. Le livre ProgrammingWPF - Sells-Griffith recommande des largeurs de colonnes manuelles si vous utilisez la liaison de données. :(
0 votes
@Gishu Merci, cela a du sens
0 votes
Si vous utilisez MVVM et que les valeurs de liaison changent, veuillez consulter la réponse de @Rolf Wessels.