2

データベースから値を取得する ViewModel クラスを作成したいと思います。私の目標は、DB テーブルから 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 Does not implement interface member 'System.ComponentModel.INotifyPropertyChanged.PropertyChanged'」というエラーが表示されました。

このエラーを克服する方法

4

2 に答える 2

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これとは関係ありません。

于 2013-01-08T18:37:52.140 に答える
2

INotifyPropertyChanged は、クラス定義に含める必要がある 1 つのメンバーを持つインターフェイスです。

    public event PropertyChangedEventHandler PropertyChanged;

RaisePropertyChangedまた、実際の機能を実装して、例外をスローしないようにコードを変更する必要があります。

    private void RaisePropertyChanged(string p)
    {
        if (null != PropertyChanged) PropertyChanged(this, new PropertyChangedEventArgs(p));
    }
于 2013-01-08T18:38:40.627 に答える