DataGrid getCellContent retourne null juste après avoir affecté ItemsSource

Respondido 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
     
     Respondido

    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:18
    Moderador
     
     Resposta Proposta Contém Código

    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