在我的应用程序中,我有一个定义属性的基类。然后我创建了一些继承自基类的类A,B和C.
public class BaseClass {
private static _prop;
public PropType Prop {
get { return _prop; }
set {
_prop = value;
NotifyPropertyChanged("Prop");
}
}
public BaseClass() {}
}
public class A : BaseClass {
public A() {}
private void someMethod() {
Prop = new PropType();
}
}
在派生类中,我设置了影响其他派生类B和C的基类属性的属性值。我想要做的是通知所有派生类属性已更改。我怎么能这样做?
提前致谢。
编辑根据sehe的评论。
答案 0 :(得分:2)
好的,我甚至找到了似乎有效的解决方案。我将基类中的Prop-property定义为静态属性。在派生类的构造函数中,我向基类的PropertyChanged事件注册了一个静态事件处理程序。代码现在看起来像这样:
public abstract class BaseClass {
private static _prop;
static event PropertyChangedEventHandler PropertyChanged;
private static void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(null, new PropertyChangedEventArgs(propertyName));
}
}
public static PropType Prop {
get { return _prop; }
set {
_prop = value;
NotifyPropertyChanged("Prop");
}
}
public BaseClass() {}
protected abstract void BaseVM_PropertyChanged(object sender, PropertyChangedEventArgs e);
}
public class A : BaseClass {
public A() {
base.PropertyChanged += BaseVM_PropertyChanged;
}
protected override void BaseVM_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
// react on property changes here
}
private void someMethod() {
Prop = new PropType();
}
}
请注意,您必须在BaseClass中实现静态PropertyChanged事件和相应的静态NotifyPropertyChanged方法,无论BaseClass是否从另一个已实现INotifyPropertyChanged的基类派生。