与TextBlock的DataBinding相关的问题

时间:2012-05-19 12:20:19

标签: wpf inotifypropertychanged databound

我有一个类,其中有一些get;set;属性。 OnPropertyChange事件已计算出所有get;set;属性的附加内容。 还有其他属性只有get;,它返回一个简单的计算:

public Double D_F_Percent { 
    get {
        return d_f / total;
    }           
}

这些属性绑定到TextBlocks。最初,值显示为 NaN 。但是稍后当我输入d_f的值时,它会在OnPropertyChanged中加到最后。

现在我的观点是在计算总数之后如何调用此属性并将其激活以便在TextBlock中刷新?

1 个答案:

答案 0 :(得分:2)

您可以随时触发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));
    }
}