Проблема, связанная с привязкой данных с помощью TextBlock

StackOverflow https://stackoverflow.com//questions/10665124

Вопрос

У меня есть класс, где есть несколько get;set; свойства.И OnPropertyChange событие, рассчитали сложения всех этих get;set; свойства.Есть и другие свойства, которые просто обладают get; и это возвращает простое вычисление, подобное:

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

Эти свойства привязаны к текстовым блокам.Изначально значения отображаются в виде бабушка.Но позже, когда я введу значения для d_f, и это суммируется с toal в OnPropertyChanged.

Теперь моя точка зрения заключается в том, что после вычисления total как мне вызвать это свойство и запустить его, чтобы оно обновилось в 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