Un problema relativo al database con il blocco di testo
-
11-12-2019 - |
Domanda
Ho una classe dove hanno alcune proprietà get;set;
.E OnPropertyChange
Event, hanno calcolato aggiunte di tutte quelle proprietà get;set;
.
Ci sono altre proprietà che hanno solo get;
e restituisce un calcolo semplice come:
public Double D_F_Percent {
get {
return d_f / total;
}
}
.
Queste proprietà sono legate a piani di testo.Inizialmente, i valori vengono visualizzati come nan .Ma più tardi quando inserisco i valori per d_f
, e viene aggiunto fino a TAAL in OnPropertyChanged
.
Ora il mio punto è dopo aver calcolato il totale Come posso chiamare questa proprietà e licenziare in modo che venga aggiornato nel TextBlock
?
Soluzione
È possibile sparare il PropertyChanged
in qualsiasi momento e il motore di rilegatura aggiornerà l'interfaccia utente.
Non è necessario farlo in un setter di proprietà.Quindi nel metodo in cui si calcola total
Sollevare l'evento con il nome della proprietà calcolato D_F_Percent
.
Vedi nel metodo CalculateTotal
del campione:
public class ViewModel : INotifyPropertyChanged
{
private double d_f;
public double D_F
{
get { return d_f; }
set { d_f = value; FirePropertyChanged("D_F"); }
}
private double total;
public double Total
{
get { return total; }
set { total = value; FirePropertyChanged("Total"); }
}
public Double D_F_Percent
{
get { return d_f / total; }
}
public void CalculateTotal()
{
//Do some calculation set total
FirePropertyChanged("D_F_Percent");
}
public event PropertyChangedEventHandler PropertyChanged;
public void FirePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
.