【问题标题】:creating a ViewModel class创建一个 ViewModel 类
【发布时间】:2013-01-08 18:30:17
【问题描述】:

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

这是我迄今为止在我的 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'”

如何克服这个错误

【问题讨论】:

    标签: c# wpf mvvm viewmodel


    【解决方案1】:

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

        public event PropertyChangedEventHandler PropertyChanged;
    

    您还应该通过实现实际功能来更改RaisePropertyChanged 中的代码以不引发异常:

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

    【讨论】:

      【解决方案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 与此无关。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-03
        • 1970-01-01
        • 1970-01-01
        • 2011-03-02
        • 1970-01-01
        • 2011-11-13
        相关资源
        最近更新 更多