C# 继承基类实现接口INotifyPropertyChanged子类可以使用它吗
我有一个绑定到ObservableCollection的datagrid。我想知道什么时候换房子。在同一个应用程序中,我有一个类似的datagrid,在这里我可以工作。但是,此datagrid绑定到从另一个类继承的类 下面是一个简单的代码片段 在child中,我必须实现INotifyPropertyChanged接口,尽管这对我来说有点痛苦,而且没有真正利用继承。我可以简单地将OnPropertyChanged公之于众,还是这样做不对 基类C# 继承基类实现接口INotifyPropertyChanged子类可以使用它吗,c#,.net,wpf,C#,.net,Wpf,我有一个绑定到ObservableCollection的datagrid。我想知道什么时候换房子。在同一个应用程序中,我有一个类似的datagrid,在这里我可以工作。但是,此datagrid绑定到从另一个类继承的类 下面是一个简单的代码片段 在child中,我必须实现INotifyPropertyChanged接口,尽管这对我来说有点痛苦,而且没有真正利用继承。我可以简单地将OnPropertyChanged公之于众,还是这样做不对 基类 class Animal : INotifyPrope
class Animal : INotifyPropertyChanged
{
public int Age
{
get
{ return _age;}
set
{
_age = value;
OnPropertyChanged("Age");
}
}
int _age
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
class Dog : Animal
{
public bool Fleas
{
get
{ return _fleas;}
set
{
_fleas = value;
}
}
int _fleas
}
儿童班
class Animal : INotifyPropertyChanged
{
public int Age
{
get
{ return _age;}
set
{
_age = value;
OnPropertyChanged("Age");
}
}
int _age
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
class Dog : Animal
{
public bool Fleas
{
get
{ return _fleas;}
set
{
_fleas = value;
}
}
int _fleas
}
protected
可能是您想要的,但一般来说,是的
例如,在Caliburn.Micro等MVVM框架中,您经常会发现一个抽象类,如PropertyChangedBase
,它只有INotifyPropertyChanged
的简单实现
public abstract class PropertyChangedBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
这种方法的缺点是,所有想要使用它的类最终都必须继承自
PropertyChangedBase
,这可能并不总是需要或可能的。受保护的
可能是您想要的,但通常是可以的
例如,在Caliburn.Micro等MVVM框架中,您经常会发现一个抽象类,如PropertyChangedBase
,它只有INotifyPropertyChanged
的简单实现
public abstract class PropertyChangedBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
这种方法的缺点是,所有想要使用它的类最终都必须从
PropertyChangedBase
继承,这可能并不总是需要或可能的。代码中没有显示继承。。。你还没有包括什么?对不起,狗应该继承动物-更新了我的代码在你的代码中没有显示继承。。。你们还没有包括什么?对不起,狗应该继承动物-更新了我的代码