首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么WPF支持绑定到对象的属性,而不是字段?

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

Stack Overflow用户
提问于 2009-05-09 03:04:58
回答 1查看 15.5K关注 0票数 27

我有一个WCF服务,它通过一个结构传递状态更新,如下所示:

代码语言:javascript
复制
[DataContract]
public struct StatusInfo
{
    [DataMember] public int Total;
    [DataMember] public string Authority;
}
...
public StatusInfo GetStatus() { ... }

我在ViewModel中公开一个属性,如下所示:

代码语言:javascript
复制
public class ServiceViewModel : ViewModel
{
    public StatusInfo CurrentStatus
    {
        get{ return _currentStatus; }
        set
        { 
            _currentStatus = value;
            OnPropertyChanged( () => CurrentStatus );
        }
    }    
}

XAML如下所示:

代码语言:javascript
复制
<TextBox Text="{Binding CurrentStatus.Total}" />

当我运行应用程序时,我在输出窗口中看到错误,指示找不到Total属性。我检查了一遍又一遍,而且我输入的是正确的。我突然想到,这些错误明确表示找不到'property‘。因此,在结构中添加一个属性可以让它工作得很好。但这对我来说似乎很奇怪,因为WPF不能处理字段的单向绑定。从语法上讲,您可以在代码中以相同的方式访问它们,而且只为StatusInfo结构创建自定义视图模型似乎很愚蠢。我是不是错过了一些关于WPF绑定的东西?你能绑定到一个字段,还是属性绑定是唯一的方法?

EN

回答 1

Stack Overflow用户

发布于 2009-05-16 15:51:47

我只能猜测为什么它们只支持属性:可能是因为永远不公开可变字段(probably to safeguard binary compatibility)似乎是.NET框架中的通用约定,而且它们不知何故希望所有程序员都遵循相同的约定。

此外,尽管字段和属性使用相同的语法进行访问,但数据绑定使用反射,并且(我听说)访问字段和访问属性时使用反射的方式必须不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/842575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档