以编程方式强制验证Silverlight 3 UIElement(文本框)

时间:2011-06-23 14:59:39

标签: c# validation c#-4.0 silverlight-3.0 uielement

是否有一个易于以编程方式强制uielement在Silverlight 3中进行验证?

我有一个文本框,其中我绑定了Silverlight.Validators.RegexValidator,遗憾的是验证器检查了另一个uielements内容(组合框)。通常onSelectionChanged在该组合框上 - 它的选定项目在验证器中设置,当文本框内容发生变化(按键)时,它会对此进行检查。

但我还想在组合框选择改变时再次运行相同的验证

我可以执行类似myTextBox.Validate();甚至类似myTextBox.KeyUp()的操作来强制验证吗?

由于

2 个答案:

答案 0 :(得分:1)

假设您的TextBox.Text属性绑定到某个属性,您可以强制绑定更新源,这将导致验证。

var bindingExpression = textBox.GetBindingExpression(TextBox.TextProperty);
bindingExpression.UpdateSource();

答案 1 :(得分:0)

您似乎正在使用this toolkit而不是内置的绑定验证系统。根据{{​​3}},您似乎应该在验证程序对象上调用Validate(true)

我强烈建议您尝试转移到ValidatorBase,这比仅仅验证KeyUp上的TextBox.Text要强大得多。对于正则表达式验证,您可以将official Silverlight data validation support应用于TextBox绑定的属性。设置绑定验证后, Ed Chapel 的答案将对您有用。 Silverlight也可能会自动重新查询验证,您根本不需要处理SelectionChanged。