Frage

Ich habe eine Klasse, in der es welche gibt get;set; Eigenschaften.Und OnPropertyChange Ereignis, Additionen von all diesen berechnet haben get;set; Eigenschaften.Es gibt andere Eigenschaften, die einfach vorhanden sind get; und es gibt eine einfache Berechnung zurück wie:

public Double D_F_Percent { 
    get {
        return d_f / total;
    }           
}

Diese Eigenschaften sind an TextBlocks gebunden.Zunächst werden die Werte als angezeigt NaN.Aber später, wenn ich Werte für eingebe d_f, und es wird zur Gesamtsumme addiert OnPropertyChanged.

Nun geht es mir darum, nach der Berechnung der Gesamtsumme diese Eigenschaft aufzurufen und auszulösen, damit sie im aktualisiert wird TextBlock?

War es hilfreich?

Lösung

Sie können das abfeuern PropertyChanged jederzeit und die Bindungs-Engine aktualisiert die Benutzeroberfläche.

Es ist nicht erforderlich, dies in einem Eigenschaften-Setter zu tun.Also in der Methode, mit der Sie berechnen total Lösen Sie einfach das Ereignis mit Ihrem berechneten Eigenschaftsnamen aus D_F_Percent.

Siehe im Beispiel CalculateTotal Methode:

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));
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top