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