wpf - 从代码中设置 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
解决方案
推荐阅读
- elasticsearch - 每天使用 cronjob 重启一次 Elasticservice
- python-3.x - python中的风险评分
- go - 当 Go 程序收到 SIGABRT 时,“m=”表示什么
- java - 带比较器的有序流
- javascript - 有没有办法让这个平面阵列更紧凑?
- arrays - 如何从数组中找到精确(最小)元素以匹配给定的总和
- node.js - 如何用承诺中止进程?
- hibernate - JPA - 如何实现此 SQL 行为(将父实体左连接到先前内部连接的子实体和大子实体)
- sql - 尝试使用合并更新我的表时出现 ORA-38104
- laravel - 尝试显示从外部 URL 重定向的页面时不断收到“MethodNotAllowedHttpException”