3

私は次のXAMLを持っています-

<TextBox Text="{Binding Path=NumberOfItems, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" />
<Button Command="{Binding Path=StartCommand}">Start</Button>

ViewModelで-

public string this[string columnName]
    {
        get
        {
            string result = null;
            switch (columnName)
            {
                 case "NumberOfItems":
                    if (this.NumberOfItems <= 0)
                    {
                        result = "Items required";
                    }
                    break;
            }

            return result;
        }
    }

TextBoxが値を変更するたびに、トリガーはそれに応じて機能します。しかし、次の場合、それは機能していません-

  1. テキストボックスの全文を選択した後、ユーザーがキーボードの削除ボタンを押したとき。

  2. ユーザーがTextBoxにある最後の文字を削除したとき。

ただし、ValidatesOnDataErrorは機能しています。

TextBoxが空になったときにどうすれば機能させることができますか?

ユーザーが無効なデータを入力すると、TextBoxスタイルが変更されます。スタートボタンをクリックしてこれを知らせたい。

TextBoxに無効なデータがあることを[スタート]ボタンに知らせるにはどうすればよいですか?

4

2 に答える 2

4

整数型のプロパティをテキストボックスのテキストプロパティにバインドしようとしていると思います。整数をnullにすることはできないため、この場合、空の文字列は機能しません。null許容整数を使用することも、空の文字列を処理する独自のコンバーターを作成することもできます。

于 2013-02-13T09:27:24.250 に答える
1

ユーザーが無効なデータを入力すると、TextBoxスタイルが変更されます。スタートボタンをクリックしてこれを知らせたい。

TextBoxに無効なデータがあることを[スタート]ボタンに知らせるにはどうすればよいですか?

検証コードを次のように変更します。

 case "NumberOfItems":
                if (this.NumberOfItems==null || this.NumberOfItems <= 0)
                {
                    result = "Items required";
                }
                break;

string.IsNullOrEmpty(this["NumberOfItems"])あなたはあなたの内でチェックすることができCanExceuteStartCommandますStartCommand

于 2013-02-13T10:11:13.820 に答える