2

たとえば、次のような mvvm パターンを介してバインドされたテキスト ボックスがあります。

<TextBox VerticalAlignment="Center" Grid.Column="2" Grid.Row="1" Validation.ErrorTemplate="{StaticResource ValidationErrorTemplate}">
            <TextBox.Text>
                <Binding Path="Entity.LastName" NotifyOnValidationError="True">
                    <Binding.ValidationRules>
                        <validations:MandatoryValidationRule/>

この特定のルールは、テキスト ボックスに値が入力されたかどうかをチェックします。ただし、このルールは、ユーザーがテキストを入力して削除した場合にのみ有効になります。ほとんどの場合、ユーザーが空白のフィールドを除外するのは、入力するのを忘れたためです。

では、ビューモデルから、ユーザーが実際にデータを保存できるようにする前に、すべての検証ルールを強制的にチェックするにはどうすればよいでしょうか?

どういうわけか一度にすべてのコントロールにそれを行うことができればそれもいいでしょう.

ありがとう。

4

1 に答える 1

-1

空白のフィールドがエラーを示すように、ウィンドウがロードされたらルールを自動的に更新するように強制できます。

public void Window_Loaded(object sender, RoutedEventArgs e)
{
    textbox1.GetBindingExpression(TextBox.TextProperty).UpdateSource();
    textbox2.GetBindingExpression(TextBox.TextProperty).UpdateSource();
}

IDataErrorInfoまたは、 Text バインディングを実装および更新して、ValidatesOnDataErrors

 <Binding Path="Entity.LastName" NotifyOnValidationError="True" ValidatesOnDataErrors="True">

実装方法の簡単な例を次に示しますIDataErrorInfo

于 2014-05-17T18:14:11.127 に答える