INotifyPropertyChanged与Enum

时间:2014-05-19 19:26:18

标签: c# wpf enums inotifypropertychanged

仍然是C#和WPF的新手,我想使用Enum,但我无法弄清楚如何将它与OnPropertyChanged一起使用

public enum _status
{
    AuthRequired, AuthAttempted, AuthReceived, AuthError, AuthSuccessful
}

这不起作用:

public enum AuthStatus
{
  get { return _status; }
  set { ..... }
}

我知道解决方案会非常简单,但是当我查看谷歌时,我还没有找到任何帮助吗?

2 个答案:

答案 0 :(得分:3)

这根本行不通。

问题的一部分是,根据定义,enum无法设置值,也无法正常使用枚举。这就是枚举的工作原理。

现在,如果模型或viewmodel中的属性是枚举类型,则可以轻松地将其声明为属性并像其他任何类型一样引发属性更改。

private Status _status
public enum Status
{
    AuthRequired, AuthAttempted, AuthReceived, AuthError, AuthSuccessful
}

public Status Status
{
    get { return _status; }
    set
    {
        _status = value;
        RaisePropertyChanged("Status");
    }
}

答案 1 :(得分:1)

您无法将enum声明为财产。您的代码必须是:

private _status _myStatus;
public _status AuthStatus
{
  get { return _myStatus; }
  set 
  { 
     _myStatus = value;
     NotifyPropertyChanged("AuthStatus")
  }
}

编写public enum _status声明了一个名为_status的新类型(请注意,这不是一个类型的非常好的名称,因为它看起来像一个私有数据成员)。然后,您需要声明一个属性的字段,然后您可以运行NotifyPropertyChanged。