Question

J'ai un cours où j'en ai get;set; propriétés.Et OnPropertyChange événement, ont calculé les additions de tous ces get;set; propriétés.Il existe d'autres propriétés qui ont juste get; et il renvoie un calcul simple comme :

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

Ces propriétés sont liées aux TextBlocks.Initialement, les valeurs s'affichent sous la forme NaN.Mais plus tard, lorsque j'entre des valeurs pour d_f, et cela s'ajoute au total dans OnPropertyChanged.

Maintenant, mon point est qu'après avoir calculé le total, comment puis-je appeler cette propriété et la déclencher pour qu'elle soit actualisée dans le TextBlock?

Était-ce utile?

La solution

Vous pouvez tirer le PropertyChanged à tout moment et le moteur de liaison mettra à jour l’interface utilisateur.

Il n’est pas obligatoire de le faire dans un setter de propriétés.Donc dans la méthode où vous calculez total déclenchez simplement l'événement avec le nom de votre propriété calculé D_F_Percent.

Voir dans l'échantillon CalculateTotal méthode:

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));
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top