数据绑定适用于字符串,但不适用于对象内部的字符串
本文关键字:适用于 字符串 内部 对象 数据绑定 不适用 | 更新日期: 2023-09-27 18:17:08
所以我有一个String属性绑定到文本框的Text属性它工作得很好-
public String MyString { get; set; }
MyString = "Hello World";
<TextBox Text="{Binding Path=MyString}"....
然而,当我试图使用一个对象内的字符串绑定它不工作…就像
public class MyObject
{
public String MyString { get; set; }
}
MyObject myObject = new MyObject();
myObject.MyString = "Hello World";
<TextBox Text="{Binding Path=myObject.MyString}"...
我不明白为什么这不是绑定。我所做的只是将字符串放入类中,然后更改xaml以反映这一点。知道哪里出错了吗?
您需要在ViewModel上使用属性公开myObject实例,而不仅仅是使用本地变量(您似乎正在根据您发布的代码进行操作)。像这样:
public MyObject Obj { get; set; }
Obj = new MyObject() { MyString = "Hello World" };
和XAML:
<TextBox Text="{Binding Path=Obj.MyString}" ...
您可能在绑定发生后进行更改,并且由于您似乎没有实现INPC
,因此一旦设置了字符串/对象,就不会对绑定进行更新。
(如果您不太熟悉绑定,您可能还想看一下概述)
我同意John的观点。您应该使用INotifyPropertyChanged或依赖属性来正确地将属性绑定到您的UI。很有可能绑定正在工作,但显示为空字符串,因为绑定发生在设置该值之前。
何时设置DataContext?