Проблема, связанная с привязкой данных с помощью TextBlock
-
11-12-2019 - |
Вопрос
У меня есть класс, где есть несколько 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));
}
}