[英]How can I use a dotted path as a property name of a PropertyChangedEventHandler?
如何使用虛線路徑作為PropertyChangedEventHandler的屬性名稱?
public class Person
{
private int _age;
public int Age
{
get { return _age;}
set
{
_age = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public partial class MyControl : UserControl, INotifyPropertyChanged
{
public Person Person
{
get { return (Person)GetValue(PersonProperty); }
set { SetValue(PersonProperty, value); }
}
public static DependencyProperty PersonProperty =
DependencyProperty.Register("Person", typeof (Person), typeof (MyControl), null);
private void someMethod()
{
OnPropertyChanged("Person.Age");
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
<TextBox Text="{Binding Person.Age, Mode=TwoWay}"/>
但是OnPropertyChanged(“ Person.Age”)無法解析該符號。
是否可以將虛線路徑用作OnPropertyChanged()的propertyName?
Age
設置器,您應該始終調用OnPropertyChanged("Age")
。
INotifyPropertyChanged
不適用於子屬性。 您還不需要在UserControl上使用它,因為依賴項屬性已經提供了通知。 在Person
類中修復OnPropertyChanged
調用后,就可以了。
您可以通過以下幾種方式修復Person.Age
設置器:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.