8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

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

Ryan Day 2月前

40 0

我有一个 WCF 服务,它通过如下结构传递状态更新:[DataContract]public struct StatusInfo{ [DataMember] public int Total; [DataMember] public string Authority...

我有一个 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 绑定的某些内容?您可以绑定到字段吗?还是属性绑定是唯一的方法?

帖子版权声明 1、本帖标题:为什么 WPF 支持绑定到对象的属性,但不支持字段?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Ryan Day在本站《xaml》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我只能猜测为什么他们只支持属性:也许是因为在 .NET 框架中似乎有一个通用约定,即永不公开可变字段( 可能是为了维护二进制兼容性 ),并且他们不知何故希望所有程序员都遵循相同的约定。

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

返回
作者最近主题: