【发布时间】:2011-05-16 13:29:37
【问题描述】:
我有一个相当简单的视图,它用作搜索表单。有两个组合框和一个带有“搜索”按钮的文本框。如果下拉列表中没有选择或文本框为空,则无法执行搜索。我在我的应用程序的几个地方使用了 IDataErrorInfo,但它似乎不适合这里(我没有“SearchPageModel”,我不确定如何在视图模型上实现它),并且由于完全缺乏验证器控件,我不知道该怎么做。如果用户尝试搜索而之前没有这样做,我只想显示一条有关填写所有信息的消息。最简单的方法是什么?
更新: 按照第一个答案的链接中的建议,我创建了一个验证规则并将我的文本框修改为如下所示:
<TextBox Grid.Column="1" Grid.Row="3" Name="tbxPartNumber" Margin="6">
<TextBox.Text>
<Binding Path="SelectedPartNumber" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:RequiredTextValidation/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
但是,这里有一个新问题:当我转到屏幕并在文本框中输入内容,然后将其删除时,该框以红色突出显示,正如预期的那样。 Validation.GetHasErrors(tbxPartNumber) 返回真。如果我转到屏幕并且根本不与文本框交互,则 Validation.GetHasErrors(tbxPartNumber) 返回 false。它似乎只在我修改文本时才有效......它不会验证用户是否只是出现并点击搜索而不输入任何内容。有没有办法解决这个问题?
【问题讨论】:
-
更新了我的答案以尝试解决这个问题。
标签: wpf validation mvvm requiredfieldvalidator