Si vous voulez remplir un DataGrid, vous pouvez les ajouter pour donner à Datagrid.ItemSource une liste d'objets. Par exemple Personne (nom, âge, ...) ou autre chose.

Existe-t-il un moyen de placer des informations supplémentaires (supplémentaires) dans Object (Person) pour styliser chaque ligne dans DataGrid individuellement, en n'utilisant que Datagrid.ItemSource = List<Person>?

0
Denis 17 janv. 2017 à 03:19

2 réponses

Meilleure réponse

Uniquement si vous modifiez votre classe Person pour contenir ces informations. Par exemple, vous pouvez mettre une icône là-dedans, puis demander au DataGrid d'afficher une icône différente par ligne. Mais c'est un peu sale.

Au lieu de cela, je recommanderais d'utiliser un convertisseur. Lorsque vos données telles que l'âge sont passées dans la fenêtre WPF, votre convertisseur s'exécutera et vous pourrez renvoyer ce que vous voulez, comme une icône, une couleur, etc. De cette façon, vous pouvez personnaliser chaque ligne et conserver la logique dans votre convertisseur sans la classe Person se confond avec des éléments de l'interface utilisateur.

0
Kelly 17 janv. 2017 à 01:38

Vous pouvez ajouter un DataGridTemplateColumn à la collection Columns de DataGrid et placer n'importe quel UIElement que vous souhaitez dans son CellTemplate, par exemple:

<DataGrid>
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <StackPanel>
                        <Rectangle Width="50" Height="50" Fill="Gray" />
                        <TextBlock Text="{Binding Name}" />
                    </StackPanel>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>
0
mm8 17 janv. 2017 à 10:50