为了讨论的方便,这里有一个简单的人类我如何可以绑定到一个辅助属性在Silverlight
public class Person : DependencyObject, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public static readonly DependencyProperty FirstNameProperty =
DependencyProperty.Register("FirstName",
typeof (string),
typeof (Person),
null);
public static readonly DependencyProperty LastNameProperty =
DependencyProperty.Register("LastName",
typeof(string),
typeof(Person),
null);
public string FirstName
{
get
{
return (string) GetValue(FirstNameProperty);
}
set
{
SetValue(FirstNameProperty, value);
if(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("FirstName"));
}
}
public string LastName
{
get
{
return (string) GetValue(LastNameProperty);
}
set
{
SetValue(LastNameProperty, value);
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("LastName"));
}
}
}
我希望去建立一个只读属性,这样
public string FullName
{
get { return FirstName + " " + LastName; }
}
如何在这种情况下绑定工作?我试着添加一个DependancyProperty并为全名引发PropertyChanged事件。基本上我只想拥有一个我可以绑定的属性,只要名字或姓氏改变,就会返回用户的全名。这是我在修改中使用的最后一堂课。
public class Person : DependencyObject, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public static readonly DependencyProperty FirstNameProperty =
DependencyProperty.Register("FirstName",
typeof (string),
typeof (Person),
null);
public static readonly DependencyProperty LastNameProperty =
DependencyProperty.Register("LastName",
typeof(string),
typeof(Person),
null);
public static readonly DependencyProperty FullNameProperty =
DependencyProperty.Register("FullName",
typeof(string),
typeof(Person),
null);
public string FirstName
{
get
{
return (string) GetValue(FirstNameProperty);
}
set
{
SetValue(FirstNameProperty, value);
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("FirstName"));
PropertyChanged(this, new PropertyChangedEventArgs("FullName"));
}
}
}
public string LastName
{
get
{
return (string) GetValue(LastNameProperty);
}
set
{
SetValue(LastNameProperty, value);
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("LastName"));
PropertyChanged(this, new PropertyChangedEventArgs("FullName"));
}
}
}
public string FullName
{
get { return GetValue(FirstNameProperty) + " " + GetValue(LastNameProperty); }
}
}
+1,这看起来不错我。 – AnthonyWJones 2010-04-01 21:53:34
我很新,在Silverlight中绑定。我发现的大多数例子都使用了DependencyProperty。最重要的是,我实际上无法让我的绑定工作,直到我开始使用依赖属性。到目前为止,学习Silverlight绑定对我来说是一场稳步的艰苦战斗。 – Matt 2010-04-01 22:15:24