为什么 XAML 绑定在我的视图模型中成功:
private string _testStr = "Test";
public string TestStr
{
get { return _testStr; }
}
但不是这样:
public string TestStr = "Test";
我错过了什么吗?
谢谢。
因为 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 的依赖属性。
它必须是公共属性而不是变量
get 使其成为公共属性
想法是限制暴露给外部世界的内容