C# 枚举已更改事件

C# 枚举已更改事件,c#,.net,wpf,C#,.net,Wpf,我正在编写一个WPF应用程序,我想使用枚举作为状态变量 示例:当程序启动时,某些控件被禁用,直到状态改变 当状态更改时,我希望通过事件处理程序禁用/启用各种控件。过去我写过很多自定义事件处理程序,但是,使用枚举作为触发器让我大吃一惊 有什么建议吗?您应该在视图模型中实现inotifPropertyChanged,并在值更改时调用事件。您应该在视图模型中实现inotifPropertyChanged并在值更改时调用事件。如果您使用的是MVVM方法,那么我同意Daniel White的观点您需要实现

我正在编写一个WPF应用程序,我想使用枚举作为状态变量

示例:当程序启动时,某些控件被禁用,直到状态改变

当状态更改时,我希望通过事件处理程序禁用/启用各种控件。过去我写过很多自定义事件处理程序,但是,使用枚举作为触发器让我大吃一惊


有什么建议吗?

您应该在视图模型中实现
inotifPropertyChanged
,并在值更改时调用事件。

您应该在视图模型中实现
inotifPropertyChanged
并在值更改时调用事件。

如果您使用的是MVVM方法,那么我同意Daniel White的观点您需要实现INotifyPropertyChanged。您应该将控件上的IsEnabled成员绑定到ViewModel上的属性

代码:

XAML:


如果您使用的是MVVM方法,那么我同意Daniel White的观点,即您需要实现INotifyPropertyChanged。您应该将控件上的IsEnabled成员绑定到ViewModel上的属性

代码:

XAML:



我希望能把事情抽象出来。这是一个相对简单的实现。如果没有其他的选择建议,那么我将=我希望必须把事情抽象出来。这是一个相对简单的实现。如果没有建议其他选项,那么我将根据应用程序的复杂性编写一些方法来切换控件。远非优雅,但不值得MVVM或类似设计模式的抽象级别。谢谢@丽思酒店谨防“我的应用程序对于MVVM来说太简单”的陷阱!随着规范的变化,应用程序的复杂性通常会增加,当这种情况发生时,MVVM越早到位越好。即使是最基本的应用程序,基本MVVM的实现也没有实际的开销,它简化了应用程序的整体结构,使您能够继续前进。非常合理。也许我现在就应该这样做,以免以后当它变得更大时我不得不这样做。我怀疑它会成长,但是。。。你永远不知道。基于应用程序的复杂性,我想我只需要编写一些方法来切换控件。远非优雅,但不值得MVVM或类似设计模式的抽象级别。谢谢@丽思酒店谨防“我的应用程序对于MVVM来说太简单”的陷阱!随着规范的变化,应用程序的复杂性通常会增加,当这种情况发生时,MVVM越早到位越好。即使是最基本的应用程序,基本MVVM的实现也没有实际的开销,它简化了应用程序的整体结构,使您能够继续前进。非常合理。也许我现在就应该这样做,以免以后当它变得更大时我不得不这样做。我怀疑它会成长,但是。。。你永远不知道。
public class ViewModel : INotifyPropertyChanged
{
      public MyEnum EnumValue 
      { 
           get { return enumValue; } 
           set { 
                 enumValue = value;
                 AreControlsEnabled = enumValue == MyEnum.SomeValue;
           }
      }

      public bool AreControlsEnabled 
      {
           get { return areControlsEnabled; }
           set {
                 areControlsEnabled = value;
                 if (PropertyChanged != null)
                     PropertyChanged(this, new PropertyChangedEventArg("AreControlsEnabled");
            }
      }

      public event PropertyChangedEventHandler PropertyChanged;
}
<TextBox IsEnabled="{Binding AreControlsEnabled}"/>