[英]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.