Wpf 在验证错误时更新数据源

Wpf 在验证错误时更新数据源,wpf,validation,data-binding,Wpf,Validation,Data Binding,我有一个文本框,它绑定到下面的属性。它有一个带有自定义验证的双向绑定。如果验证未通过,并且出现错误,则绑定不会更新源。即使验证有错误,如何使源代码更新?我希望验证更像是一个警告,而不是一个错误 这是我的简化xaml: <TextBox> <TextBox.Text> <Binding Path="Value" UpdateSourceTrigger="PropertyChanged"> <Bind

我有一个
文本框
,它绑定到下面的属性。它有一个带有自定义验证的双向绑定。如果验证未通过,并且出现错误,则绑定不会更新源。即使验证有错误,如何使源代码更新?我希望验证更像是一个警告,而不是一个错误

这是我的简化xaml:

<TextBox>
    <TextBox.Text>
       <Binding Path="Value"
        UpdateSourceTrigger="PropertyChanged">
          <Binding.ValidationRules>
             <validators:TelephoneNumberRule />
             <validators:NotOptionalRule />
          </Binding.ValidationRules>
       </Binding>
    </TextBox.Text>
</TextBox>

谢谢。

ValidationRule
ValidationStep
属性设置为
UpdatedValue
将使其在源属性更新后运行:

<TextBox>
    <TextBox.Text>
        <Binding Path="Value" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <validators:TelephoneNumberRule ValidationStep="UpdatedValue" />
                <validators:NotOptionalRule ValidationStep="UpdatedValue" />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

这是正确的,但这也使验证器在值中获得一个
BindingExpression
,而不是字符串。我用这个问题解决了这个问题:
<TextBox>
    <TextBox.Text>
        <Binding Path="Value" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <validators:TelephoneNumberRule ValidationStep="UpdatedValue" />
                <validators:NotOptionalRule ValidationStep="UpdatedValue" />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>