我在使用MVVM模式的C#,WPF应用程序中编写。 我试图绑定我写的不同项目的属性。 在运行应用程序时,显示的属性在运行属性时更新时现在更新。
重要的是说在Proj1中名称正在更新
namespace Proj1
{
public class Human: inotifypropertychanged
{
private string _name;
public string Name{
get{ return _name;}
set{ _name = value;
OnPropertyChange("Name");}
}
public Human()
{
Name = "Danny";
}
//implement correctly the inotifypropertychanged
}
}
namespace Proj2WpfApp
{
public class MainViewModel: inotifypropertychanged
{
private Human human;
private string _humanName
public string HumanName{
get{ return _humanName;}
set{ _humanName = human.Name;
OnPropertyChange("HumanName");}
}
public MainViewModel()
{
human = new Human();
}
//updating the name
}
}
xaml代码中的
<TextBlock Text ="{binding HumanName}"/>
答案 0 :(得分:1)
设置HumanName
时,human.Name
属性的值不会神奇地改变。设置human.Name
时,您也不会更新HumanName
。
您应该将MainViewModel更改为Human
属性而不是HumanName
:
public class MainViewModel: INotifyPropertyChanged
{
private Human human;
public Human Human
{
get { return human; }
set
{
human = value;
OnPropertyChange("Human");
}
}
...
}
然后像这样绑定:
<TextBlock Text ="{Binding Human.Name}"/>