WPF绑定,当对象的引用更改时
代码段: xaml 如果我将节点类型更改为'bb',textblock也会更改,但是如果我创建一个平淡的新对象并将属性节点类型设置为'bb',然后将其分配给MemberInfo,则textblock不会更新。有人能给我解释一下吗?提前谢谢 假设“FamilyMemberInfo”类有20个属性,所有属性都与UI上的元素(textblock、combobox等)绑定,我从其他地方获得了FamilyMemberInfo的一个实例,我想简单地将其分配给MemberInfo,就像上面的代码一样,以使UI相应地更新,如何使其工作WPF绑定,当对象的引用更改时,wpf,binding,reference,Wpf,Binding,Reference,代码段: xaml 如果我将节点类型更改为'bb',textblock也会更改,但是如果我创建一个平淡的新对象并将属性节点类型设置为'bb',然后将其分配给MemberInfo,则textblock不会更新。有人能给我解释一下吗?提前谢谢 假设“FamilyMemberInfo”类有20个属性,所有属性都与UI上的元素(textblock、combobox等)绑定,我从其他地方获得了FamilyMemberInfo的一个实例,我想简单地将其分配给MemberInfo,就像上面的代码一样,以使UI
谢谢。您必须将
DataContext
设置为您创建的新实例
private void bt_Click(object sender, RoutedEventArgs e)
{
//MemberInfo.NodeType = "bb";
FamilyMemberInfo mi2 = new FamilyMemberInfo();
mi2.NodeType = "bb";
MemberInfo = mi2;
this.DataContext = MemberInfo; // you have to add this line to the code
}
原因是当您设置this.DataContext=MemberInfo在构造函数中,它指向您在构造函数中创建的对象,我们将其命名为objectA
现在,您设置MemberInfo=mi2
,mi2
是一个不同的对象,您设置MemberInfo
指向mi
,而您创建的对象a
(在构造函数内部)仍然存在,并且这个对象。DataContext
仍然指向该对象
因此,您必须设置
DataContext
以指向上述代码中的新对象。aha,酷,它可以工作!我怎么可能没有注意到,:)万分感谢。
public FamilyMemberInfo MemberInfo;
public MainWindow()
{
InitializeComponent();
MemberInfo = new FamilyMemberInfo();
MemberInfo.NodeType = "aa";
this.DataContext = MemberInfo;
}
private void bt_Click(object sender, RoutedEventArgs e)
{
//MemberInfo.NodeType = "bb";
FamilyMemberInfo mi2 = new FamilyMemberInfo();
mi2.NodeType = "bb";
MemberInfo = mi2;
}
private void bt_Click(object sender, RoutedEventArgs e)
{
//MemberInfo.NodeType = "bb";
FamilyMemberInfo mi2 = new FamilyMemberInfo();
mi2.NodeType = "bb";
MemberInfo = mi2;
this.DataContext = MemberInfo; // you have to add this line to the code
}