为了账号安全,请及时绑定邮箱和手机立即绑定

为什么WPF支持绑定到对象的属性,而不支持字段?

为什么WPF支持绑定到对象的属性,而不支持字段?

白衣染霜花 2019-06-17 14:49:03
为什么WPF支持绑定到对象的属性,而不支持字段?我有一个WCF服务,它通过如下结构传递状态更新:[DataContract]public struct StatusInfo{     [DataMember] public int Total;     [DataMember] public string Authority;}...public StatusInfo GetStatus() { ... }我在ViewModel中公开了一个属性,如下所示:public class ServiceViewModel : ViewModel{     public StatusInfo CurrentStatus     {         get{ return _currentStatus; }         set         {              _currentStatus = value;             OnPropertyChanged( () => CurrentStatus );         }     }    }XAML是这样的:<TextBox Text="{Binding CurrentStatus.Total}" />当我运行应用程序时,我会在输出窗口中看到错误,表示无法找到Total属性。我又查,打字正确。我突然意识到,这些错误明确表示找不到“属性”。因此,向结构中添加一个属性使其工作得很好。但这在我看来很奇怪,WPF无法处理单向绑定到字段。从语法上讲,您在代码中访问它们的方式是相同的,只为StatusInfo结构创建一个自定义视图模型似乎很愚蠢。我错过了关于WPF绑定的东西吗?您可以绑定到某个字段,还是属性绑定是唯一的方式?
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

我只能猜测它们为什么只支持属性:也许是因为在.NET框架中,永远不公开可变字段似乎是一种通用的约定(可能是为了维护二进制兼容性在某种程度上,他们希望所有的程序员都遵循同样的惯例。

此外,虽然使用相同的语法访问字段和属性,但数据绑定使用反射和反射(我听说过)必须以不同的方式访问字段,而不是访问属性。


查看完整回答
反对 回复 2019-06-17
  • 2 回答
  • 0 关注
  • 1170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信