如何从另一个项目绑定属性

时间:2015-04-16 07:29:57

标签: c# wpf mvvm

我在使用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}"/>

1 个答案:

答案 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}"/>