0

为什么 XAML 绑定在我的视图模型中成功:

    private string _testStr = "Test";
    public string TestStr
    {
        get { return _testStr; }
    }

但不是这样:

    public string TestStr = "Test";

我错过了什么吗?

谢谢。

4

2 回答 2

3

因为 field 不是有效的绑定源

公共语言运行时 (CLR) 对象

您可以绑定到任何公共语言运行时 (CLR) 对象的公共属性、子属性以及索引器。绑定引擎使用 CLR 反射来获取属性的值。或者,实现 ICustomTypeDescriptor 或已注册 TypeDescriptionProvider 的对象也可以与绑定引擎一起使用。

动态对象

您可以绑定到实现 IDynamicMetaObjectProvider 接口的对象的可用属性和索引器。如果您可以在代码中访问该成员,则可以绑定到它。

ADO.NET 对象

您可以绑定到 ADO.NET 对象,例如 DataTable。ADO.NET DataView 实现 IBindingList 接口,该接口提供绑定引擎侦听的更改通知。

XML 对象

您可以绑定到 XmlNode、XmlDocument 或 XmlElement 并在其上运行 XPath 查询。访问作为标记中的绑定源的 XML 数据的一种便捷方法是使用 XmlDataProvider 对象。您还可以绑定到 XElement 或 XDocument,或者使用 LINQ to XML 绑定到对这些类型的对象运行的查询的结果。使用 LINQ to XML 访问作为标记中的绑定源的 XML 数据的一种便捷方法是使用 ObjectDataProvider 对象。

DependencyObject 对象

您可以绑定到任何 DependencyObject 的依赖属性。

于 2013-07-18T15:45:49.460 回答
0

它必须是公共属性而不是变量
get 使其成为公共属性
想法是限制暴露给外部世界的内容

于 2013-07-18T15:50:46.347 回答