[WPF] Problema con EditTemplate di una DataGrid ed utilizzo dell'Objec...

giovedì 03 dicembre 2009 - 10.42

lukepet Profilo | Junior Member

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.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5