数据绑定到一个只读属性
-
16-09-2019 - |
题
是否有可能的字段(文本框)结合于不执行一组属性?
例如我具有与3个字段实现INotifyPropertyChanged的对象:
public decimal SubTotal
{
get { return this.subTotal; }
set
{
this.subTotal = value;
this.NotifyPropertyChanged("SubTotal");
this.NotifyPropertyChanged("Tax");
this.NotifyPropertyChanged("Total");
}
}
public decimal Tax
{
get { return this.taxCalculator.Calculate(this.SubTotal, this.Region); }
}
public decimal Total
{
get { return this.SubTotal + this.Tax; }
}
我确实不能测试这一尚未作为UI不言并没有在这个类做的时候,才发挥作用等很多工作,但是这是有可能我的方式,还是有不同方式是什么?
解决方案
可以使用这样的特性作为数据绑定的源。当然,任何这样的数据绑定将必须OneWay
和不TwoWay
,这样就TextBox.Text
变化将不会试图传播回特性(因为它是只读的失败)。
[编辑] 以上仍然适用于的WinForms,但你并不需要关心OneWay/TwoWay
。这将只是从来没有尝试更新的来源,如果是只读的。
其他提示
我只是想,它工作正常。绑定引擎不尝试更新只读属性。它不会阻止编辑控件(除非你让他们只读),但编辑的值会不持久
没有,因为数据绑定在很大程度上依赖于对经由反射检索属性的设定值,你将有很多麻烦数据绑定的和期待值要在一个只读属性设置。
在这个例子中,你将无法进行数据绑定到Tax
和Total
性质。
不隶属于 StackOverflow