2013-07-18 128 views
0

爲什麼XAML綁定成功到這在我的視圖模型:WPF綁定到數據上下文

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

但並不是這樣:

public string TestStr = "Test"; 

我缺少的東西?

謝謝。

回答

3

因爲字段不是一個有效的binding source

公共語言運行庫(CLR)對象

您可以綁定到公共屬性,子屬性,以及索引,任何普通的語言運行時(CLR)對象。綁定引擎使用CLR反射來獲取屬性的值。或者,實現ICustomTypeDescriptor或具有註冊的TypeDescriptionProvider的對象也可以與綁定引擎一起使用。

動態對象

可以綁定到可用的屬性和一個實現IDynamicMetaObjectProvider接口的對象的索引器。如果您可以通過代碼訪問該成員,則可以綁定到該成員。

ADO.NET對象

您可以綁定到ADO.NET對象,如數據表。 ADO.NET DataView實現IBindingList接口,該接口提供綁定引擎偵聽的更改通知。

XML對象

您可以綁定到和一個XmlNode,XmlDocument的,或XmlElement的運行XPath查詢。訪問作爲標記中綁定源的XML數據的便捷方式是使用XmlDataProvider對象。您還可以綁定到XElement或XDocument,或者使用LINQ to XML綁定到在這些類型的對象上運行的查詢的結果。使用LINQ to XML訪問作爲標記中綁定源的XML數據的便捷方式是使用ObjectDataProvider對象。

DependencyObject的對象

您可以綁定到任何的DependencyObject的依賴屬性。

0

它是一個公共財產不是一個變量
的get使其成爲公共財產
的想法是什麼限制暴露於外界