爲了討論的方便,這裏有一個簡單的人類我如何可以綁定到一個輔助屬性在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