ビュー モデルで XAML バインディングがこれに成功する理由:
private string _testStr = "Test";
public string TestStr
{
get { return _testStr; }
}
しかし、これではありません:
public string TestStr = "Test";
何か不足していますか?
ありがとう。
field は有効なバインディング ソースではないため:
共通言語ランタイム (CLR) オブジェクト
共通言語ランタイム (CLR) オブジェクトのパブリック プロパティ、サブプロパティ、およびインデクサーにバインドできます。バインディング エンジンは、CLR リフレクションを使用してプロパティの値を取得します。または、ICustomTypeDescriptor を実装するか、登録された TypeDescriptionProvider を持つオブジェクトもバインディング エンジンで動作します。
動的オブジェクト
IDynamicMetaObjectProvider インターフェイスを実装するオブジェクトの使用可能なプロパティとインデクサーにバインドできます。コードでメンバーにアクセスできる場合は、それにバインドできます。
ADO.NET オブジェクト
DataTable などの 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 の依存関係プロパティにバインドできます。
変数ではなくパブリック プロパティでなければなりません
get はそれをパブリック プロパティ
にします 外部の世界に公開されるものを制限するという考え方です