DataGrid getCellContent retourne null juste après avoir affecté ItemsSource
-
quinta-feira, 5 de julho de 2012 08:02
Bonjour,
J'ai un soucis avec une datagrid (elle-même placée dans une childwindow).
Juste après avoir affecté l'ItemsSource, la méthode maGrille.Columns[XXX].getCellContent(item) retourne null.
En utilisant un timer, et en exécutant la même chose 500 millisecondes plus tard, ça fonctionne...
Exemple:
GrilleTachesGroupeSaisie.ItemsSource = new PagedCollectionView(_listeTachesAPointer);
GrilleTachesGroupeSaisie.Columns.First(x => x.GetValue(FrameworkElement.NameProperty) as String == "ColonneTempsPasse").GetCellContent(_listeTachesAPointer.First())
Une idée? Merci.
Todas as Respostas
-
quinta-feira, 5 de julho de 2012 09:54
Bonjour,
Je dirais que cela ne sera dispo que quand la grille aura été effectivement rendue à l'écran. Faire par exemple un test répétitif avec un Timer et afficher aussi le LayoutUpdated et je pense que cela deviendra !=null quand cet évènement se sera produit.
Autant que possible, j'essaierai de travailler sur les données source plutôt que sur la grille.
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
- Marcado como Resposta Corentin A_ segunda-feira, 16 de julho de 2012 09:55
-
quinta-feira, 5 de julho de 2012 12:14
Bonjour, et merci pour votre réponse.
Je pense que vous avez raison.
En fait, je viens de faire un test avec un compteur, une simple affection d'itemssource me lance des dizaines de fois l'évènement LayoutUpdated
Et effectivement, "au bout d'un moment", après N LayoutUpdated, j'ai accès au contenu de mes cellules...
Me reste plus qu'à trouver un moyen propre de savoir quand c'est ok, quand la grille est correctement rendue à l'écran.
Une idée? un moyen intuitif d'émuler un comportement "DataLoaded" ou "DataBinded" sur une grille?
-
domingo, 15 de julho de 2012 20:18Moderador
Bonjour,
Dans la page ou vous affichez le DataGrid.
Il suffit d'implémenter la surcharge de OnApplyTemplate()
Normalement tout les objets sont finis d'être construit sur la page quand le onapplyTemplate est appelé.
Boolean bElementCreer = false; public override void OnApplyTemplate() { base.OnApplyTemplate(); bElementCreer = true; }Cordialement, Pascal.
Développeur Wpf/SilverLight/WinPhone7
- Sugerido como Resposta Gilles TOURREAUMVP, Moderator segunda-feira, 16 de julho de 2012 06:55

