C# InotifyProperty已使用枚举更改

C# InotifyProperty已使用枚举更改,c#,wpf,enums,inotifypropertychanged,C#,Wpf,Enums,Inotifypropertychanged,对C#和WPF还是新手,我想使用枚举,但我不知道如何将其与OnPropertyChanged一起使用 public enum _status { AuthRequired, AuthAttempted, AuthReceived, AuthError, AuthSuccessful } 这不起作用: public enum AuthStatus { get { return _status; } set { ..... } } 我知道解决方案会很简单,但我在谷歌上找不到任何东

对C#和WPF还是新手,我想使用枚举,但我不知道如何将其与OnPropertyChanged一起使用

public enum _status
{
    AuthRequired, AuthAttempted, AuthReceived, AuthError, AuthSuccessful
}
这不起作用:

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

我知道解决方案会很简单,但我在谷歌上找不到任何东西。。有什么帮助吗?

您不能将
枚举
声明为属性。您的代码需要:

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

写入
public enum\u status
声明了一个名为
\u status
的新类型(注意,这不是一个很好的类型名称,因为它看起来像一个私有数据成员)。然后,您需要声明一个属性和该类型的字段,然后运行NotifyPropertyChanged。

这根本不起作用

问题的一部分在于,根据定义,不能设置值,对于枚举的正常使用,您永远不会希望设置值。这就是枚举的工作原理

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

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

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

解决办法并不简单。无论enum与否都是一样的,因为INotifyPropertyChanged根本不关心属性所包含的内容。它发布属性的名称,而不是内容。因此,请阅读任何教程和书籍,并完成它们。INotifyPropertyChanged不是WPF,而是core.NET。忘掉enum吧。对于其他类型,您将如何实现?完全一样我只是想用它来跟踪我正在做的事情。。像第一步、第二步等等。然后我想使用该属性设置WPF数据触发器更改以更改标签或其他内容。。这些都是我最初的想法谢谢你的解释。这很有意义,并且将使用不同的数据类型。很乐意提供帮助。当你对自己的答案感到满意时,别忘了标记一个被接受的答案!直到5分钟才让你离开=嗯,这很有趣。今天学习的东西++;