4

テキスト ボックスの値に応じて、他のテキスト ボックスを有効/無効にする必要があるテキスト ボックスがあります。MVVM パターンを使用しています。

ここに私の問題があります.TextBox1にテキストを入力すると、TextBox1のセッターが起動され、ループの場合、valusが存在するかどうかを確認でき、他のテキストボックスを無効にしています. ここで、テキスト ボックスに「9」という単一の値があり、それを削除/バックスペースすると、他のテキスト ボックスを有効にするために Set イベントがトリガーされません。

意見:

<TextBox Text = {Binding TextBox1 , UpdateSourceTrigger = PropertyChanged,Mode= TwoWay}/>
<TextBox Text = {Binding TextBox2 , UpdateSourceTrigger = PropertyChanged,Mode= TwoWay}/>
<TextBox Text = {Binding TextBox3 , UpdateSourceTrigger = PropertyChanged,Mode= TwoWay}/>

モデルを見る:

private int_textBox1;
public int TextBox1
{
 get {return _textBox1;}
 set 
   {
     _textBox1= value;
     if(value > 0)
       {
          //Code for Disabling Other Text Boxes (TextBox2 and TextBox3)
       }
      else
       {
          // Code for Enabling Other Text Boxes (TextBox2 and TextBox3)
       }
     NotifyPropertyChanged("TextBox1");
   }
}
4

2 に答える 2

9

MVVM パターンを使用している場合は、ブール型のプロパティを作成し、それにTextBox.IsEnabledプロパティをバインドする必要があります。プロパティが実際に変更されたことをビュー(あなたの場合はTextBox )に伝えるために、ブール値のプロパティは PropertyChanged イベントを発生させる必要があります。

public bool IsEnabled1
{
    get { return _isEnabled1; }

    set
    {
        if (_isEnabled1 == value)
        {
            return;
        }

        _isEnabled1 = value;
        RaisePropertyChanged("IsEnabled1");
    }
}

そしてxamlで:

<TextBox Text="{Binding TextBox1, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
         IsEnabled="{Binding IsEnabled1}" />

他のTextBoxesと同様

于 2013-06-05T07:42:28.460 に答える