数据绑定适用于字符串,但不适用于对象内部的字符串

本文关键字:适用于 字符串 内部 对象 数据绑定 不适用 | 更新日期: 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?