我有一个班,那里有一些 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));
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top