创建一个ViewModel类

时间:2013-01-08 18:30:17

标签: c# wpf mvvm viewmodel

我想创建一个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'”

如何克服此错误

2 个答案:

答案 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));
    }