Winforms数据绑定挑战

时间:2012-09-10 19:54:18

标签: .net winforms data-binding

我有两个公式。

a = sqrt ( b )

并且它是反向的

b = a ^ 2

我想要两个编辑框,其中一个编辑框的值为a,另一个编辑框的值为b。如果我手动编辑任一编辑框,则根据上面的公式更新另一个。为了使问题更加棘手,编辑框应仅限于显示两个小数位,并且只有在正在编辑的当前文本框中输入或失去焦点后才能激活另一个文本框的更新。也不可能输入无效值(无数字)。

单独地,每件小件似乎都不是问题但是将所有要求捆绑在一起我只是无法理解。

注意a和b的值应该是某个对象的数据绑定属性。

1 个答案:

答案 0 :(得分:0)

如果双重更新会给您带来麻烦。

private double? a;
private double? b;
public double? A
{
    get
    {
        return a;
    }
    set
    {
        if (a == value) return;
        a = value;
        if (a == null) b = null; else b = a * a;
        NotifyPropertyChanged("A");
        NotifyPropertyChanged("B");
    }
}

public double? B
{
    get
    {
        return b;
    }
    set
    {
        if (b == value) return;
        b = value;
        if (b == null) b = null; else a = Math.Sqrt((double)b);
        NotifyPropertyChanged("A");
        NotifyPropertyChanged("B");
    }
}