0

アプリケーションでMVVMパターンを使用しています.10個のテキストボックスを含む画面がありました.1つのテキストボックスに値を入力するたびに、他のテキストボックスを無効にする必要があります. 値を入力するたびにイベントが発生し、他の 9 つのテキスト ボックスを無効にできます。

ここで問題が発生します。値を削除/バックスペースしてもイベントは発生しません

例 : これらのテキスト ボックスごとに
3 つのテキスト ボックスTB1、TB2、TB3があるとします。テキスト プロパティ バインディングは Text="{Binding TextBox1 ,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged }" のようになります。 Text BoxesTB2 と TB3.So TB1の UI に何かを書き込むと、 TextBox1プロパティに対して Set イベントが発生し、TB2 と TB3 を無効にしています。今、 TB1で単一の数値/文字を削除/バックスペースすると、セットTextBox TB1に値がないため、他の 2 つのテキスト ボックスを有効にするためのイベントは発生しません。

View : 

<StackPanel orintation = "Horizontal" Margin = "20,0,20,0">
<TextBox Text = {Binding TextBox1,Mode = TwoWay, UpdateSourceTrigger = PropertyChanged} IsEnbaled={Binding IsTextBox1Enabled}>
<TextBox Text = {Binding TextBox2,Mode = TwoWay, UpdateSourceTrigger = PropertyChanged} IsEnbaled={Binding IsTextBox2Enabled}>
<TextBox Text = {Binding TextBox3,Mode = TwoWay, UpdateSourceTrigger = PropertyChanged} IsEnbaled={Binding IsTextBox3Enabled}>
</StackPanel>

ViewModel:

private bool _isTextBox1Enabled = true;
private bool _isTextBox2Enabled = true;
private bool _isTextBox3Enabled = true;

/// Encapsulating Above 3 _isTextBoxEnabled Properties  

private string _textBox1;
private String _textBox2;
private string _textbox3;

Public String TextBox1
{
    get { Return _textBox1;}
    set 
    {
        _textBox1 = value;
        if (TextBox1 > 0)
        {
            _isTextBox2Enabled  = false;
            _isTextBox3Enabled  = false;
        }   
        else
        {
            _isTextBox2Enabled  = true;
            _isTextBox3Enabled  = true;
        }           
        NotifyPropertyChanged("TextBox1");
    }
}

Public String TextBox2
{
    get { Return _textBox2;}
    set 
    {
        _textBox2 = value;
        if (TextBox2 > 0)
        {
            _isTextBox1Enabled  = false;
            _isTextBox3Enabled  = false;
        }   
        else
        {
            _isTextBox1Enabled  = true;
            _isTextBox3Enabled  = true;
        }           
        NotifyPropertyChanged("TextBox2");
    }
}

Public String TextBox3
{
    get { Return _textBox3;}
    set 
    {
        _textBox3 = value;
        if (TextBox3 > 0)
        {
            _isTextBox2Enabled  = false;
            _isTextBox1Enabled  = false;
        }   
        else
        {
            _isTextBox2Enabled  = true;
            _isTextBox1Enabled  = true;
        }       
        NotifyPropertyChanged("TextBox3");
    }
}
4

1 に答える 1