3 messaggi dal 18 febbraio 2009
Buon giorno a tutti, dopo mesi di lettura di libri vari su EF, WPF e C# sto sperimentando una semplice applicazione per uso personale che si appoggia ad un database SQL Compact, nel quale ho creato una semplice tabella dove tra i vari campi ce n'e' uno che rappresenta un costo unitario e l'altro una quantità e nel form WPF visualizzo anche il totale calcolato moltiplicando questi due.
Il form WPF è composto da una ListBox nella quale al Load della finestra vengono "bindati" i dati tramite una ObservableCollection nella quale i dati sono stati caricati dal database prima in una List<>.
Ci sono poi dei textbox "bindati" con la ListBox per poter editare i valori in base alla riga selezionata nella ListBox ed un TextBlock per visualizzare il campo calcolato.
Ho esteso la classe parziale dell'oggetto EF aggiungendo la proprietà calcolata mettendo nel "getter" return costounitario * quantità.
Al momento della lettura dei dati dal database tutto funziona, i campi vengono calcolati e sono OK, ma se nei textbox modifico o il costo unitario o la quantità il totale non mi viene aggiornato.
Non so come fare a sfruttare i metodi onCostoUnitarioChanged() oppure onQuantitàChanged() che vengono creati dal designer di EF quando si genera il modello EDMX, per aggiornare in tempo reale il totale calcolato.
Probabilmente è una stupidaggine ma ci sto combattendo ormai da parecchie ore.
Grazie in anticipo per un aiuto.
Per far sì che il campo calcolo si aggiorni occorre che venga scatenato OnPropertyChanged anche per tale proprietà. Se guardi il set dell'unitario o della quantità vedrai che viene scatenato l'evento per le rispettive proprietà. Ovviamente il motore non sa che la tua calcolata è il frutto delle due. Quindi usa i metodi partial e nei metodi On**Changed chiama ReportPropertyChanged("ProprietàCalcolata")

Ciao

Il mio blog
Homepage
3 messaggi dal 18 febbraio 2009
Grazie mille ... ho provato ma sbaglio ancora qualcosa ...
Dunque nell'estensione della classe dove ho inserito la mia proprietà calcolata ho scritto questo codice, seguendo le tue indicazioni:

// Proprietà calcolata
public int CostoTotale
{
get
{
return CostoUnitario * Quantita;
}

//richiamo il metodo parziale di quantità quando essa cambia

partial void OnQuantitaChanged()
{
ReportPropertyChanged("CostoTotale");
}

Quando cambio il valore della quantità nel textbox, il valore del CostoTotale sia nel TextBlock che nella riga della ListBox non si aggiorna.
Cosa manca ancora ?
Grazie in anticipo.
3 messaggi dal 18 febbraio 2009
Grazie Ricciolo.

Ho risolto .... bastava fare così:

partial void OnQuantitaChanged()
{

OnPropertyChanged("CostoTotale");

}

come immaginavo .... era una stupidaggine ... bastava saperlo!!

Saluti

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
In primo piano

I più letti di oggi

Media
In evidenza
MISC