所以我有一个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以反映它。任何想法出了什么问题?
答案 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?