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?

È stato utile?

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));
    }
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top