首页 > 解决方案 > 从代码中设置 ValidationError 最简单的方法

问题描述

在这种典型情况下,我们有一些对话框让用户通过配置向导。在其中一个对话框步骤中,我们有一个带有高级对象的 ComboBox。当SelectionChanged事件引发时,我们会执行所有必要的代码来保存用户的选项。到目前为止,没有任何问题,并且像魅力一样工作。

现在我们陷入困境的想法是,当用户在对话框中配置除此之外的所有 UI 元素(未选择值)时,我们希望ValidationError在用户单击下一步时引发 a。就像网站上的许多表格一样。您填写表格,点击提交,然后ValidationErrors提出。

我们想要同样的方式,但由于没有绑定,我们似乎无法让它工作。通常我们使用iDataError,但在这种情况下它不使用。

XAML:

<ComboBox
    x:Name="cbMyComboBox"
    Grid.Row="2"
    Grid.Column="1"
    Width="250"
    Margin="3"
    HorizontalAlignment="Left"
    VerticalAlignment="Stretch" />

后面的代码:

Private Async Sub btnNext_Click(sender As Object, e As RoutedEventArgs) Handles btnNext.Click
    If cbMyComboBox.SelectedIndex < 0 Then

        '---->> Here lies the problem BindingExpression is always nothing? <<----
        Dim be As BindingExpression = BindingOperations.GetBindingExpression(cbMyComboBox, ComboBox.TextProperty)

        Dim validationError As ValidationError = New ValidationError(New DataErrorValidationRule(), be)
        validationError.ErrorContent = "Please select a value bla bla bla"
        Validation.MarkInvalid(be, validationError)

        'Somewhere else we remove the ValidationError when user selects a value
    Else
        'Next step
    End If
End Sub

标签: wpfvb.netvalidationxamlcombobox

解决方案


推荐阅读