0

いくつかのget;set;プロパティがあるクラスがあります。そして、OnPropertyChangeイベントは、これらすべてのget;set;プロパティの追加を計算しました。持っている他のプロパティがあり、次のget;ような単純な計算を返します。

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

これらのプロパティはTextBlocksにバインドされています。最初は、値はNaNとして表示されます。しかし、後で、の値を入力するd_fと、それはtoalに追加されOnPropertyChangedます。

ここでの私のポイントは、合計を計算した後、このプロパティをどのように呼び出して起動し、TextBlock?で更新されるようにするかです。

4

1 に答える 1

2

いつでも起動できPropertyChanged、バインディングエンジンがUIを更新します。

プロパティセッターで行う必要はありません。したがって、計算する方法ではtotal、計算されたプロパティ名を使用してイベントを発生させるだけD_F_Percentです。

サンプル CalculateTotalメソッドを参照してください。

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));
    }
}
于 2012-05-19T12:33:01.010 に答える