سؤال

لدي فئة حيث يكون بعض get;set; ملكيات.و OnPropertyChange الحدث، وقد حسبت الإضافات من كل تلك get;set; ملكيات.هناك خصائص أخرى لديها فقط get; وتقوم بإرجاع عملية حسابية بسيطة مثل:

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

ترتبط هذه الخصائص بـ TextBlocks.في البداية، تظهر القيم كـ نان.ولكن لاحقًا عندما أقوم بإدخال قيم لـ d_f, ، ويتم إضافته إلى toal in OnPropertyChanged.

الآن نقطتي هي بعد حساب الإجمالي كيف يمكنني استدعاء هذه الخاصية وإطلاقها حتى يتم تحديثها في TextBlock?

هل كانت مفيدة؟

المحلول

يمكنك إطلاق النار على PropertyChanged في أي وقت وسيقوم محرك الربط بتحديث واجهة المستخدم.

ليس مطلوبًا القيام بذلك في أداة تحديد الممتلكات.لذلك في الطريقة التي تحسب فيها 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));
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top