一个与DataBinding with TextBlock相关的问题
-
11-12-2019 - |
题
我有一个班,那里有一些 get;set;
属性。和 OnPropertyChange
事件,计算了所有这些 get;set;
属性。还有其他的属性,只是有 get;
它返回一个简单的计算,比如:
public Double D_F_Percent {
get {
return d_f / total;
}
}
这些属性绑定到TextBlocks。初始值显示为 南.但后来当我输入值 d_f
, 然后加起来就变成了toal OnPropertyChanged
.
现在我的观点是在计算总计之后,我如何调用这个属性并激发它,以便它在 TextBlock
?
解决方案
你可以发射 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