.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作为属性名称来指示对象上的所有属性都已更改。