WPF アプリケーションを作成しており、State 変数に Enum を使用したいと考えています。
例: プログラムが起動すると、状態が変化するまで特定のコントロールが無効になります。
状態が変化したら、イベント ハンドラーを介してさまざまなコントロールを無効/有効にしたいと考えています。私は過去に多くのカスタム イベント ハンドラーを作成してきましたが、列挙型をトリガーとして使用することに頭を悩ませていました。
助言がありますか?
ビューモデルに実装INotifyPropertyChanged
し、値が変更されたときにイベントを呼び出す必要があります。
MVVM アプローチを使用している場合は、INotifyPropertyChanged を実装する必要があることに Daniel White に同意します。コントロールの IsEnabled メンバーを ViewModel のプロパティにバインドする必要があります。
コード:
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;
}
XAML:
<TextBox IsEnabled="{Binding AreControlsEnabled}"/>