2009-11-03 1 views
1

Mon List<BusinessObject> a des propriétés publiques que je veux lier aux colonnes d'un DataGrid. Malheureusement, les noms des propriétés publiques ne sont pas bons et je ne sais même pas ce qu'ils sont avant l'exécution. Pour cette raison, j'ai défini AutoGenerateColumns = True et intercepte chaque DataGridAutoGeneratingColumnEvent afin que je puisse inspecter ce que c'est et l'annuler, le masquer ou nommer l'en-tête autrement.L'utilisation de Mode = TwoWay et AutogenerateColumns = True dans Silverlight 3 DataGrid

Cela fonctionne très bien mais je n'arrive pas à comprendre comment régler le Mode = TwoWay afin que mes événements INotifyPropertyChanged soient déclenchés une fois que toutes les colonnes sont générées et que quelqu'un modifie une cellule.

Question supplémentaire: Lors de la navigation le long des lignes de la grille, le contexte de données de la grille est-il automatiquement défini avec BusinessObject?

Répondre

0

Grâce à this post, j'ai appris que la liaison se produit sur DataGridTextColumn. Ainsi, la manière de définir le mode en cours d'exécution est:

1 private void DataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
2 { 
3  DataGridTextColumn tc = (DataGridTextColumn)e.Column; 
4  tc.Header = "Custom Header"; 
5  tc.Binding.Mode = BindingMode.TwoWay; 
6 } 

Maintenant que je TwoWay lier, je dois comprendre comment les changements font revenir à mon BusinessObject.

0

Si la liaison est correcte, vos objets métier recevront automatiquement les mises à jour requises. Pour vous relier par programme vous pourriez avoir besoin d'un peu plus de code, quelque chose comme:

... 
Binding binding = new Binding("Propertyname"); 
tc.binding.Mode = BindingMode.TwoWay; 
... 
Questions connexes