1
単一バインディングで複数の検証規則を使用できますか? XAMLのみを使用してTextBox
を検証しようとしていますが、BindingGroup
は動作していないようです。単一バインディングの複数の検証規則
<TextBox>
<TextBox.Text>
<Binding Path="Title" UpdateSourceTrigger="PropertyChanged"/>
</TextBox.Text>
<TextBox.BindingGroup>
<BindingGroup NotifyOnValidationError="True">
<BindingGroup.ValidationRules>
<rule:CantBeEmpty ValidatesOnTargetUpdated="True" />
<rule:CantBeMoreThanXCharacters
CharacterLimit="30"
ValidatesOnTargetUpdated="True" />
<BindingGroup.ValidationRules/>
</BindingGroup>
</TextBox.BindingGroup>
</TextBox>
rule
名前空間がxmlns:rule="clr-namespace:MyApp.Views.ValidationRules"
これらのルールは、標準の構文に従う参照:
public class CantBeEmpty : ValidationRule {
public override ValidationResult Validate(object value, CultureInfo cultureInfo) {
[...]
}
}
これは正解です。私の質問は、BindingGroupが何をしているのかという誤解が原因です。 MSDNから: _A BindingGroupは、複数のバインディング間の関係を作成します。このバインディングは、検証および更新が可能です。この場合、検証する必要があるフィールドは1つだけなので、実際にはBindingGroupは必要ありません。 'BindingGroup'は、郵便番号と州の住所、2つのパスワードフィールドなど、複数のフィールドを一緒に検証する必要がある場合に便利でした。 – Queder