1

私のUIはシンプルです。ObservableCollection<Model>Silverlight 5.0 アプリケーションでは、MVVM を使用しており、ユーザーが aと aに追加したいときに多くのテキスト ボックスを追加できるようにしていButtonます。

Modelプロパティが 1 つだけあり、そのデータ型はinteger.

このモデルのデータ テンプレートは単なるテキスト ボックスです。

<TextBox Text="{Binding Number}" />

したがって、すべてのテキストボックスにエラーがない場合はコマンドが有効になりますが、モデルにエラーがある場合はコマンドを無効にする必要があります。

この検証を実装するにはどうすればよいですか? 前もって感謝します。

4

1 に答える 1

1

適切なプロパティのセッターで例外をスローするだけです。

public int Number
{
    get {//...}
    set {
           if(value >= 10)
             throw new Exception("Number should be less than 10");
           _number = number;
        }

}

そして、あなたのバインディングは次のようになります。

<TextBox Text="{Binding Number, Mode="TwoWay" ValidateOnExceptions="True"}" />

FrameworkElementにはBindingValidationErrorEventがあり、これを使用してコマンドロジックの有効化/無効化を実装できます。バインディングに設定NotifyOnValidationErrorすることを忘れないでください。True

psAlso、INotifyDataErrorInfoについて読むことをお勧めします

于 2012-11-14T06:03:28.610 に答える