2010-11-22 1 views
0

J'ai un DataGrid qui a AutoGenerateColumns = "True". Je lie ce DataGrid à une collection d'objets qui sont d'un type de données inconnu au moment du design.Comment puis-je spécifier le modèle pour une colonne de données de Silverlight?

Le DataGrid est capable d'identifier le type de données auquel une colonne particulière est liée. Il montre un bloc de texte ou une case à cocher si le contenu est un texte ou un bool respectivement.

Je souhaite afficher des données d'une manière particulière (c'est-à-dire un DataTemplate) s'il s'agit d'un type spécifique. Y a-t-il un moyen de faire cela?

+0

Savez-vous combien de colonnes vous avez besoin? Ignorer le DataType? –

+0

Non, je peux lier à un objet qui a 8 propriétés ou un qui a 25. Tous les types de données différents pour les propriétés. Si un type de données est un "RickLinkAction", j'aimerais afficher un LinkButton. Si c'est une chaîne, je vais vouloir afficher un TextBlock. Si c'est un "RickCalendarAction", je veux afficher autre chose. –

+0

La réponse a été publiée ... –

Répondre

0

Comme vous n'êtes pas au courant des colonnes qui peuvent exister, vous devez revenir au code derrière. Si vous aviez su que vous auriez toujours 8 propriétés sur l'objet donné avec ses types; vous pouvez déplacer ce comportement dans le XAML et ne pas avoir à gérer la gestion de l'événement. La référence MSDN résume comment accomplir cela, mais cela revient à gérer l'événement AutoGeneratingColumn.

private void dataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
{ 

    ... 

} 
+0

J'ai essayé et ça ne marche pas pour moi. Le type auquel ma grille de données est liée est un type créé dynamiquement au moment de l'exécution ... Donc, mon dataGrid ne peut pas spécifier le nom de la propriété ... –

+0

La gestion des événements ne fonctionne pas ou le fait que l'utilisation de XAML pur ne soit pas travail? –

Questions connexes