我想创建一个ViewModel类来从数据库中检索值。 我的目标是从我的数据库表中检索RAM的使用值(Ram total& Ram available),然后将其显示在我的View上。
这是我到目前为止在我的ViewModel类
上所做的public class RamViewModel : INotifyPropertyChanged
{
float _ramTotal;
float _ramUsed;
public float RamTotal
{
get { return _ramTotal; }
set { _ramTotal = value; RaisePropertyChanged("RamTotal"); }
}
public float RamUsed
{
get { return _ramUsed; }
set { _ramUsed = value; RaisePropertyChanged("RamUsed"); }
}
private void RaisePropertyChanged(string p)
{
throw new NotImplementedException();
}
}
当我构建类时,我收到此错误声明,“ViewModel.RamViewModel未实现接口成员'System.ComponentModel.INotifyPropertyChanged.PropertyChanged'”
如何克服此错误
答案 0 :(得分:2)
您的类不会公开PropertyChanged
事件,这对于实现INotifyPropertyChanged
的类是必要的(它是该接口的唯一成员)。
所以你应该添加:
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
var handler = this.PropertyChanged;
if (handler != null) {
handler(this, new PropertyChangedEventArgs(propertyName);
}
}
ObservableCollection
与此无关。
答案 1 :(得分:2)
INotifyPropertyChanged是一个需要包含在类定义中的一个成员的接口:
public event PropertyChangedEventHandler PropertyChanged;
您还应该通过实现实际功能来更改RaisePropertyChanged
中的代码以避免异常:
private void RaisePropertyChanged(string p)
{
if (null != PropertyChanged) PropertyChanged(this, new PropertyChangedEventArgs(p));
}