Um problema relacionado ao DataBinding com TextBlock
-
11-12-2019 - |
Pergunta
Eu tenho uma aula onde tem alguns get;set;
propriedades.E OnPropertyChange
evento, calcularam adições de todos aqueles get;set;
propriedades.Existem outras propriedades que apenas possuem get;
e retorna um cálculo simples como:
public Double D_F_Percent {
get {
return d_f / total;
}
}
Essas propriedades estão vinculadas a TextBlocks.Inicialmente, os valores aparecem como NaN.Mas mais tarde, quando eu inserir valores para d_f
, e é somado para totalizar OnPropertyChanged
.
Agora, meu ponto é, depois de calcular o total, como faço para chamar essa propriedade e acioná-la para que ela seja atualizada no TextBlock
?
Solução
Você pode disparar o PropertyChanged
a qualquer momento e o mecanismo de vinculação atualizará a IU.
Não é necessário fazer isso em um configurador de propriedades.Então, no método onde você calcula total
basta gerar o evento com o nome da propriedade calculada D_F_Percent
.
Veja na amostra CalculateTotal
método:
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));
}
}