Ho un problema con l'edit template di una cella di una datagrid in WPF (WPF Toolkit). Il template è costruito con un ComboBox e l'ItemsSource del ComboBox è caricato a runtime.
Ho questo problema:
L'ItemsSource del ComboBox è bindato ad un ObjectDataProvider ed ho la necessità che i valori caricati nell'ObjectDataProvider siano differenti a seconda della riga della griglia che vado a selezionare.
Per venire incontro a questa mia esigenza pensavo di associare all'ObjectDataProvider un metodo in grado di aggiornare i valori a seconda di determinati valori del selecteditem della riga (passati come parametri).
Per gestire questo aggiornamento mi sono appoggiato all'evento selectionchanged della griglia. Ma accade qualcosa di strano.
Infatti, come io vado ad aggiornare l'ObjectDataProvider viene anche aggiornato il SelectedValue del ComboBox e questo provoca una modifica della rispettiva proprietà della riga appena lasciata.
Penso che ciò dipenda dal fatto che l'associazione di binding dell'edit template non viene aggiornata fintanto che io non seleziono la cella...se è così, come posso fare per evitare questo spiacevole comportamento? Al momento non mi viene in mente niente!
Non so se sono stato chiaro nello spiegare la problematica, comunque, a scanso di equivoci, ho costruito un piccolo progetto di test in cui è possibile verificare il problema.
Lo potete scaricare qui:
http://pollosky.it/wp-content/uploads/2009/12/ObjectProviderTest.zip Provate a selezionare un valore dalla seconda cella della prima riga e poi passate alla seconda riga, vedrete che il valore della cella precedente viene cancellato.