c# - 数据绑定(bind)到只读属性

标签 c# winforms data-binding properties inotifypropertychanged

是否可以将字段(文本框)绑定(bind)到未实现集合的属性?

例如,我有一个对象实现了 INotifyPropertyChanged 的​​ 3 个字段:

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 还没有制作,而且在它起作用之前在这个类中还有很多其他工作要做,但这是否可能是我拥有的方式,或者是否有不同的方式怎么办?

最佳答案

您可以使用此类属性作为数据绑定(bind)源。自然地,任何此类数据绑定(bind)都必须是 OneWay 而不是 TwoWay,这样对 TextBox.Text 的更改将不会尝试传播回属性(由于它是只读的而失败)。

[编辑] 以上内容仍然适用于 WinForms,但您无需关心 OneWay/TwoWay。如果它是只读的,它永远不会尝试更新源。

关于c# - 数据绑定(bind)到只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1280022/

相关文章:

c# - 用于快速插入/删除的 .net 集合

c# - LINQ - 使用 OrderBy EnumValue 和 Union 结果集对对象列表进行排序?

c# - 从 SMTP 服务器发送电子邮件而无需输入密码

winforms - .NET 桌面应用程序的 MVC 框架

c# - xxxxx 是一个命名空间,但像类型一样使用

c# - 当我使用 Math.Round() 时,它总是返回下限

c# - Windows 窗体程序中的多个 UI

c# - 如何编写一个接受数据行并填充对象属性的通用函数?

WPF:将所有选项列表和选定选项列表绑定(bind)到带有选择复选框的列表框

asp.net - 如何计算 asp 转发器中的项目数?