创建一个ViewModel类

本文关键字:一个 ViewModel 创建 | 更新日期: 2023-09-27 17:50:58

我想创建一个ViewModel类从数据库中检索值。我的目标是检索RAM的使用值(RAM总数&Ram可用)从我的DB表,然后显示在我的视图。

这是我到目前为止对我的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'"

如何克服这个错误

创建一个ViewModel类

INotifyPropertyChanged是一个接口,它有一个成员需要包含在你的类定义中:

    public event PropertyChangedEventHandler PropertyChanged;

您还应该通过实现实际功能来更改RaisePropertyChanged中的代码,使其不抛出异常:

    private void RaisePropertyChanged(string p)
    {
        if (null != PropertyChanged) PropertyChanged(this, new PropertyChangedEventArgs(p));
    }

您的类不公开PropertyChanged事件,这对于实现INotifyPropertyChanged的类是必要的(它是该接口的唯一成员)。

所以你应该加上:

public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
    var handler = this.PropertyChanged;
    if (handler != null) {
        handler(this, new PropertyChangedEventArgs(propertyName);
    }
}

ObservableCollection与此无关