代码之家  ›  专栏  ›  技术社区  ›  Yvonnila

带验证的文本框。即使输入的文本无效,如何更新目标属性?

  •  2
  • Yvonnila  · 技术社区  · 6 年前

    我有一个 TextBox 在我看来,绑定到一个属性 MyText 在我的视图模型中。我也有一个 ValidationRule 用于输入。

    这里是 文本框 在我看来:

    <TextBox>
        <TextBox.Text>
            <Binding Path="MyText"
                     UpdateSourceTrigger="PropertyChanged" 
                     Mode="TwoWay"
                     ValidatesOnNotifyDataErrors="True"
                     ValidatesOnDataErrors="True"
                     NotifyOnValidationError="True">
                <Binding.ValidationRules>
                    <local:FormulaValidationRule />
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>
    

    这是我的验证类:

    Public Class MyTextValidationRule
        Inherits ValidationRule
    
        Public Overrides Function Validate(value As Object, cultureInfo As CultureInfo) As ValidationResult
    
            Dim validationRes = MyParser.ValidateText(value)
            If validationRes Then
                Return ValidationResult.ValidResult
            Else
                Return New ValidationResult(False, "Input is not valid")
            End If
        End Function
    End Class
    

    我想要什么 那是我的财产吗 我的文字 得到更新,即使输入的文本无效,但是,像我现在所拥有的一样,只有当文本有效时,属性才会得到更新。有什么方法可以做到这一点,即更新属性或访问 文本框 ?

    2 回复  |  直到 6 年前
        1
  •  2
  •   mm8    6 年前

    ValidationStep ValidationRule UpdatedValue

    <Binding.ValidationRules>
        <local:FormulaValidationRule ValidationStep="UpdatedValue"  />
    </Binding.ValidationRules>
    

    RawProposedValue

        2
  •  0
  •   Coops    6 年前

    ValidatesOnExceptions Data Validation in WPF