TextBlockによるデータバインディングに関する問題
-
11-12-2019 - |
質問
いくつかのget;set;
プロパティがあるクラスがあります。そしてOnPropertyChange
イベントは、すべてのget;set;
プロパティの追加を計算しました。
get;
を持つ他のプロパティがあり、そのような変更を簡単に戻す:
public Double D_F_Percent {
get {
return d_f / total;
}
}
.
これらのプロパティはTextBlocksにバインドされています。最初に、値は Nan として現れる。しかし、後でd_f
の値を入力し、OnPropertyChanged
でTOALに追加されます。
私のポイントは合計を計算した後のものです。
解決
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));
}
}
. 所属していません StackOverflow