1

WPF アプリケーションを作成しており、State 変数に Enum を使用したいと考えています。

例: プログラムが起動すると、状態が変化するまで特定のコントロールが無効になります。

状態が変化したら、イベント ハンドラーを介してさまざまなコントロールを無効/有効にしたいと考えています。私は過去に多くのカスタム イベント ハンドラーを作成してきましたが、列挙型をトリガーとして使用することに頭を悩ませていました。

助言がありますか?

4

2 に答える 2

3

ビューモデルに実装INotifyPropertyChangedし、値が変更されたときにイベントを呼び出す必要があります。

于 2012-04-25T00:30:37.810 に答える
2

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}"/>
于 2012-04-25T00:49:51.297 に答える