Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在Silverlight中从数据源刷新GUI_.net_Silverlight_Silverlight 4.0 - Fatal编程技术网

.net 在Silverlight中从数据源刷新GUI

.net 在Silverlight中从数据源刷新GUI,.net,silverlight,silverlight-4.0,.net,Silverlight,Silverlight 4.0,我有一个对象MyPerson,其属性为FirstName,LastName,以及FullName,其中 public string FullName { get {return LastName + " " + FirstName;} set {...} } 我将MyPerson绑定到一个用户控件,在该控件中,我将FirstName、LastName和FullNAme绑定到3个文本框 现在,当我修改FirstName或LastName时,我需要向UserControl指示“更新

我有一个对象
MyPerson
,其属性为
FirstName
LastName
,以及
FullName
,其中

public string FullName
{
    get {return LastName + " " + FirstName;}
    set {...}
}
我将MyPerson绑定到一个
用户控件
,在该控件中,我将FirstName、LastName和FullNAme绑定到3个文本框

现在,当我修改FirstName或LastName时,我需要向UserControl指示“更新”全名

这个“更新”命令应该是什么


Silverlight 4

您可能应该查看界面。这会让你的生活更轻松


例如:

public class Person : INotifyPropertyChanged
{
  public event PropertyChangedEventHandler PropertyChanged;

  private void NotifyPropertyChanged(String info)
  {
    if (PropertyChanged != null)
    {
      PropertyChanged(this, new PropertyChangedEventArgs(info));
    }
  }

  private String _FirstName;
  private String _LastName;

  public String FirstName
  {
    get
    {
      return this._FirstName;
    }
    set
    {
      if (this._FirstName != value)
      {
        this._FirstName = value;
        this.NotifyPropertyChanged("FirstName");
        this.NotifyPropertyChanged("FullName");
      }
    }
  }

  public String LastName
  {
    get
    {
      return this._LastName;
    }
    set
    {
      if (this._LastName != value)
      {
        this._LastName = value;
        this.NotifyPropertyChanged("LastName");
        this.NotifyPropertyChanged("FullName");
      }
    }
  }

  public String FullName
  {
    get
    {
      return String.Format("{0} {1}", this.LastName, this.FirstName);
    }
  }
}

您的视图模型应该实现该接口,以便它可以通知视图已更改的属性

查看此处了解更多信息:


此外,如果名字或姓氏发生变化,您也需要通知全名的变化

我试图实现它。通知姓氏,通知姓氏。。。但这似乎并不正确现在我看到我不仅应该通知修改的属性,还应该通知依赖的属性。。。。这有点尴尬…如果我们不知道所有的依赖属性。。。但是,这是一个解决方案…@serhio:请记住,这都是事件驱动的。在后台,它将查看
obj
是否正在实现
INotifyPropertyChanged
。如果是这样,它将绑定到事件,并查找应该在更新时通知它的属性。如果您不告诉它部分名称(以及通过代理的全名)已更新,它将不会知道,因此不会更新。;-)@布拉德·克里斯蒂:我能告诉“后台”更新对象的所有公共属性吗?类似于
NotifyProperty(“*”
(all)?PropertyChanged事件可以通过在PropertyChangedEventArgs中使用null或String.Empty作为属性名称来指示对象上的所有属性都已更改。