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

时间:2011-12-08 21:50:05

标签: c# wpf xaml data-binding

所以我有一个String属性绑定到Textbox的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以反映它。任何想法出了什么问题?

3 个答案:

答案 0 :(得分:1)

您需要在ViewModel上使用属性公开myObject实例,而不是仅使用本地变量(根据您发布的代码,您似乎正在执行此操作)。像这样:

public MyObject Obj { get; set; }

Obj = new MyObject()  { MyString = "Hello World" };

并在您的XAML中:

<TextBox Text="{Binding Path=Obj.MyString}" ...

答案 1 :(得分:0)

您可能在绑定发生后进行更改,并且因为您没有看到implement INPC,所以在设置字符串/对象后,绑定没有更新。

(如果您不熟悉绑定,可能还需要查看the overview。)

答案 2 :(得分:0)

我同意约翰的观点。您应该使用INotifyPropertyChanged或Dependency Property将属性正确绑定到UI。绑定很可能正在工作,但显示为空字符串,因为绑定发生在设置值之前。

您何时设置DataContext?